android 代码混淆
1?proguard.cfg,这就是混淆所需的proguard脚本啊。
?
其代码如下:
?
?
- -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?com.android.vending.licensing.ILicensingService??
- -keepclasseswithmembernames?class?*?{??
- ????native?<methods>;??
- }??
- -keepclasseswithmembernames?class?*?{??
- ????public?<init>(android.content.Context,?android.util.AttributeSet);??
- }??
- -keepclasseswithmembernames?class?*?{??
- ????public?<init>(android.content.Context,?android.util.AttributeSet,?int);??
- }??
- -keepclassmembers?enum?*?{??
- ????public?static?**[]?values();??
- ????public?static?**?valueOf(java.lang.String);??
- }??
- -keep?class?*?implements?android.os.Parcelable?{??
- ??public?static?final?android.os.Parcelable$Creator?*;??
- }??
?
?
从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件。
并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考<proguard_path>/examples中的例子及注释。)
2 在工程的"default.properties"中添加这样一句话“proguard.config=proguard.cfg”
?
?
打包签名后的.apk就是混淆的,其实我们只要做一步就可以了就是在"default.properties"中添加这样一句话“proguard.config=proguard.cfg”就可以了。
?