利用android proguard混淆代码
网上虽然有很多相关博客,不过貌似都不是最新版的。。于是百度+谷歌+github上的开源demo,终于成功的配置了android proguard。
最新版的android sdk的默认配置已经可以满足我们的大多数要求了,我们只需要按照sdk的提示就可以配置大部分的必须配置,然后再加上一些基本的
自定义配置就行了。
第一步,取消project.properties里面关于proguard的注释。这一步可以开启proguard。根据网上的博客,
最好加上sdk的路径。
1
2 |
sdk.dir=D:/Java/IDE/adt-bundle-windows-x86_64- 20130219 /sdk proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt |
这样一来默认的配置文件也会被包括进来。
第二步,保存被AndroidManifest.xml调用或者webview的类。这是因为proguard会移除没有被调用的代码。
1
2
3
4
5
6
7
8
9
10 |
-keepclassmembers class
fqcn.of.javascript. interface . for .webview { public
*; } -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 * extends
android.app.backup.BackupAgentHelper -keep public
class * extends
android.preference.Preference |
第三步,第三方类库。
1
2
3
4
5 |
#第三方类库 -keep class
android.** {*;} -keep class
com.jeremyfeinstein.slidingmenu.lib.** {*;} -keep class
com.actionbarsherlock.** {*;} -keep class
com.lidroid.xutils.** {*;} |
第四步,其实这一步可以代替上面所有的keep语句,彻底将误删的概率降到最低。
那就是保留所有具有公有访问权限的类和其公共成员。
1
2
3 |
-keepclasseswithmembers class
*{ public
*; } |
第五步,在github上的开源proguarddemo上学来的,删除Log代码
1
2
3
4
5
6
7 |
-assumenosideeffects class
android.util.Log { public
static *** e(...); public
static *** w(...); public
static *** wtf(...); public
static *** d(...); public
static *** v(...); } |
然后跑了一下,成功混淆并且可以运行。。。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。