Android 代码混淆
optimizationpasses 5 是什么意思?
optimizationpasses
表示proguard对你的代码进行迭代优化的次数,首先要明白optimization 会对代码进行各种优化,每次优化后的代码还可以再次优化,所以就产生了 优化次数的问题,这里面的 passes 应该翻译成 ‘次数’ 而不是 ‘通道’。楼上默认写 5 ,应该是做Android的,关于Android里面为什么写 5 ,因为作者本来写 99 ,但是每次迭代时间都很长团队成员天天抱怨,就改成 5 了,迭代会在最后一次无法优化的时候停止,也就是虽然你写着 99 ,但是可能就优化了 几次,一般情况下迭代10次左右的时候代码已经不能再次优化了。
- -optimizationpasses 5 //代码混淆压缩比 默认为5 一般不需要改
- -dontusemixedcaseclassnames //混淆后的类名为小写 如public class a
- -dontskipnonpubliclibraryclasses //混淆第三方库 加上此句后 可再后面配置某些库不混淆
- -dontpreverify // 混淆前认证,可去掉加快混淆速度
- -verbose //混淆的log 帮助排错
- -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* //代码混淆采用的算法,一般不改变,用谷歌推荐算即可
- -keepattributes *Annotation* 假如项目中有用到注解 应用加入
- 引用外部的jar包 如果不是自己写的 最好不混淆它们,因为外部jar包有可能已经混淆过,根据实际情况来 不混淆某些外部jar保持外部jar包不变的方法
- -dontwarn android.support.v4.** //执行下面一行代码如果有警告也不用中止,因为此jar不是我们自己写的,有警告也不处理,故dontwarn
- -keep class android.support.v4.** //项目中用到此jar包,在打包时必须不混淆,否则用ViewPager时必crash,原因很简单,ViewPager是一个自定义view,在布局中用类的全名来定义此布局,混淆后类名和包名改变,xml布局无法再通过类名打到此自定义view。
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
#所有包含JNI调用的类以及其内部的成员都不能被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
#扩展自android.view.View类的任何public类的setter和getter方法都不能被混淆和删除
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
#扩展自android.app.Activity类的任何类中访问属性是public,返回值是void,参数是android.view.View类型的所有函数都不能被混淆或删除
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
#任何枚举类中的values和valueOf静态方法都不能被混淆和删除
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#实现了android.os.Parcelable接口类的任何类,以及其内部定义的Creator内部类类型的public final静态成员变量,都不能被混淆和删除
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
#所有自动生成的R类中的public静态成员变量
-keepclassmembers class **.R$* {
public static <fields>;
}
优快云上还有一个大牛总结的比较完善:
http://blog.youkuaiyun.com/catoop/article/details/47208833