`
fantao005x
  • 浏览: 33471 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

代码混淆

阅读更多
1.混淆配置文件
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

# 保护泛型, removes such information by default, so configure it to keep all of it.
-keepattributes Signature
 
# For using GSON @Expose annotation
-keepattributes *Annotation*

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:

-keepclassmembers class fqcn.of.javascript.interface.for.webview {
   public *;
}

-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
}
 
-keepclassmembers class * implements java.io.Serializable { 
    static final long serialVersionUID; 
    private static final java.io.ObjectStreamField[] serialPersistentFields; 
    private void writeObject(java.io.ObjectOutputStream); 
    private void readObject(java.io.ObjectInputStream); 
    java.lang.Object writeReplace(); 
    java.lang.Object readResolve(); 
}

-keepclasseswithmembernames class * {
    native <methods>;
}

# keep entity for json



# android support
-keep class android.support.**{*;}  
-dontwarn android.support.**

# annotation.
-keep public class android.annotation.** { *; }
-dontwarn android.annotation.**

# Gson specific classes 
-keep class sun.misc.Unsafe { *; } 
-keep class com.google.gson.stream.** { *; } 
-keep class com.google.gson.examples.android.model.** { *; }  
-keep class com.google.gson.** { *;} 
-dontwarn com.google.gson.**
 
## end of Gson

# other libs

2.工程配置文件
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt

3.需要注意的问题:
a.反射不能混淆
b.泛型不能混淆
c.序列化的不能混淆
d.自定义VIEW不能混淆
e.google的gson不能混淆
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics