准备发布apk了,想混淆下代码,网上查了很多资料,总算搞定了。分享一下我的流程。
我用的是adt22
一、打开混淆设置
打开project.properties
将这行注释打开 #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
二、编辑混淆的逻辑
刚才打开注释之后,proguard-project.txt这个文件就是写混淆逻辑的地方了。
不知道怎么写没关系,我也不知道,去你的sdk的目录下找到这个文件 tools/proguard/proguard-android.txt
把这个文件的东西全部粘贴过来就ok了,如果你的apk没有其他第三方jar包,应该就做完了。
具体刚才粘过去的东西是什么用处呢,大概就是把activity和view等相关的代码不混淆,其他全部混淆。
如果做完第二步的时候,已经成功了,就不用看下面了
三、修改第三方jar包的can't find referenced class错误
这个错误是某个第三方jar包不能混淆,想找到是哪个jar包就看上面错误那句话的前面那个类是在哪个jar包中吧
修改方法如下
-dontwarn 包名.**
-keep class 包名.** {*;}
这两句话就是不混淆对应包也不要报异常
四、尽量给你的类属性设置初始值
我混淆完生成的代码,总是报错,后来我反编译了代码,去找到报错的类,发现,这个类的属性少了一个,我在源码里又给这个类的所有属性都设置的初始值,在编译才能通过。
五、导出混淆代码的apk包,右击你的项目androidtools-export signed application package 后面自己设置吧,最后finish完成之后就会生成一个apk文件,可以自己反编译一下看看代码是不是混淆过的。