虽然做了几年开发,但混淆在前两个公司还真没有接触过,被领导一问,“没做过?”感觉耳朵都红了,⊙﹏⊙b汗,赶紧补习了下,再此做个记录,希望遇到对混淆同样不了解的人能有所帮助。
不经混淆的代码,apk反编译就会将代码全部暴露出来,所以为了自己的劳动成果不被窃取,混淆代码是一定要做的。
1.proguard-project.txt
新建项目,项目目录下面的proguard-project.txt ,这个文件很重要,用来存放混淆配置,如果不小心删掉,从其他地方拷贝或者自己新建都可以
2.为proguard-project.txt添加混淆申明
2.1 基本配置
-dontshrink-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-ignorewarnings#忽略警告 也可以用
-dontwarn
-allowaccessmodification
-dontskipnonpubliclibraryclassmembers
-keepattributes *Annotation*
-dontobfuscate #不混淆(混淆时,此项不能添加,我就在改错的时候加了,还傻缺的以为错误都改好了,混淆搞定了)
2.2 把libs下面的jar包都进行申明(如果有.so文件,无需处理)例如:
-libraryjars libs/android-support-v4.jar
-libraryjars libs/alipaysdk.jar
-libraryjars libs/alipaysecsdk.jar
-libraryjars libs/alipayutdid.jar
-libraryjars libs/androidvolley.jar
-libraryjars libs/baidumapapi_v3_4_0.jar
-libraryjars libs/easemobchat_2.1.6.jar
-libraryjars libs/gson-2.2.4.jar
-libraryjars libs/httpmime-4.1.1.jar
-libraryjars libs/jg_filter_sdk_1.1.jar
2.3 将不需要混淆的部分申明出来,因为这些类经过混淆会导致程序编译不通过,
(以下可以直接拷贝到你的配置文件):
-keep public class * extends android.app.Fragment