proguard-project.txt和project.properties混淆代码
16lz
2021-01-24
【转】利用android proguard混淆代码防止反编译,优化代码
网上虽然有很多相关博客,不过貌似都不是最新版的。。于是百度+谷歌+github上的开源demo,终于成功的配置了android proguard。
最新版的android sdk的默认配置已经可以满足我们的大多数要求了,我们只需要按照sdk的提示就可以配置大部分的必须配置,然后再加上一些基本的
自定义配置就行了。
- 第一步,取消project.properties里面关于proguard的注释。这一步可以开启proguard。根据网上的博客,最好加上sdk的路径。
sdk.dir=D:/Java/IDE/adt-bundle-windows-x86_64-20130219/sdkproguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
这样一来默认的配置文件也会被包括进来。
- 第二步,保存被AndroidManifest.xml调用或者webview的类。这是因为proguard会移除没有被调用的代码。
-keepclassmembersclass fqcn.of.javascript.interface.for.webview { public *;}-keeppublic class *extends android.app.Activity -keeppublic class *extends android.app.Application -keeppublic class *extends android.app.Service -keeppublic class *extends android.content.BroadcastReceiver -keeppublic class *extends android.content.ContentProvider -keeppublic class *extends android.app.backup.BackupAgentHelper -keeppublic class *extends android.preference.Preference
- 第三步,第三方类库。
#第三方类库-keepclass android.** {*;}-keepclass com.jeremyfeinstein.slidingmenu.lib.** {*;}-keepclass com.actionbarsherlock.** {*;}-keepclass com.lidroid.xutils.** {*;}
- 第四步,其实这一步可以代替上面所有的keep语句,彻底将误删的概率降到最低。那就是保留所有具有公有访问权限的类和其公共成员。
-keepclasseswithmembersclass *{ public *;}
- 第五步,在github上的开源proguarddemo上学来的,删除Log代码
-assumenosideeffectsclass android.util.Log { public static *** e(...); public static *** w(...); public static *** wtf(...); public static *** d(...); public static *** v(...);}
配置好混淆,最后打包项目:
接着我反编译导出的APK,如下:
发现在生成的jar文件中,所有的类名,变量名都变成了a,b,c等无法正确理解的名称,达到了预期的效果。
[以上内容没有亲测,内容均来源网络]
参考地址:
http://blog.csdn.net/binyao02123202/article/details/18940715
http://blog.csdn.net/pomme_qixiaohu/article/details/8551918
http://www.2cto.com/kf/201207/144771.html
更多相关文章
- 【Android代码片段之六】Toast工具类(实现带图片的Toast消息提示)
- Android(安卓)2.0 源码发布,已经成功移植到 HTC Dream G1
- 添加android 4.0 开机音乐
- Android(安卓)OTA本地自动升级实现
- Android使用WebView从相册/拍照中添加图片
- android studio 碰到问题
- Android单元测试思路
- Android(安卓)消息通知栏用法详解(一)
- Activity之生命周期