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(...);
}

  然后跑了一下,成功混淆并且可以运行。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值