Android代码混淆:
混淆就是将类中的变量名,方法名,类名修改为A、B、C之类无意义的名称,增加反编译时的阅读难度。
首先在project.properties中将
# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
前面的#取消,然后在在proguard-project.txt中编写混淆方式。
-optimizationpasses 5
-dontusemixedcaseclassnames 【混淆时不会产生形形色色的类名 】
-dontskipnonpubliclibraryclasses 【指定不去忽略非公共的库类。 】
-dontpreverify【不预校验】
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*【优化】
#保留行号,这样显示错误时就不会显示Unknown Source
-keepattributes SourceFile,LineNumberTable
-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
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
这些是基本的混淆,对android四大组件不进行混淆,枚举不进行混淆。
如果项目中有其他第三方JAR包,必须进行特殊处理。
首先第三方包大部分都有进行混淆,如果进行二次混淆调用时就会出错。
第三方JAR包不混淆的操作如下:
首先#所有的jar包
-libraryjars libs/alipay_msp.jar 保持不混淆的JAR包
-dontwarn com.alipay.android.app.** 忽略所有的jar包错误
-keep class com.alipay.android.app.**{*; } 不混淆jar包类
默认的操作就是上面的三步,但是对于某些项目的包,还要具体问题具体分析
#Android-support-v4的jar类库,
-keep public class * extends android.support.v4.*
-keep public class * extends android.app.Fragment
#和gson有关的代码不能进行混淆不然会报错:比如实体类等等
-keep class com.test.**{*;}
-keepattributes Signature
版权声明:本文为博主原创文章,未经博主允许不得转载。