zoukankan      html  css  js  c++  java
  • proguard-project.txt和project.properties混淆代码

     【转】利用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/sdk
    proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

      这样一来默认的配置文件也会被包括进来。

    • 第二步,保存被AndroidManifest.xml调用或者webview的类。这是因为proguard会移除没有被调用的代码。
    -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  
    • 第三步,第三方类库。
    #第三方类库
    -keep
    class android.**
     {*;}
    -keep
    class com.jeremyfeinstein.slidingmenu.lib.**
     {*;}
    -keep
    class com.actionbarsherlock.**
     {*;}
    -keep
    class com.lidroid.xutils.**
     {*;}
    • 第四步,其实这一步可以代替上面所有的keep语句,彻底将误删的概率降到最低。那就是保留所有具有公有访问权限的类和其公共成员。
    -keepclasseswithmembers
    class *{
        public *;
    }
    • 第五步,在github上的开源proguarddemo上学来的,删除Log代码
    -assumenosideeffects
    class 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

  • 相关阅读:
    silverlight与CSLA的快速应用01序
    oracle常用的时间格式转换
    实现打印从数字1到5,非常规方法
    Java学习笔记之数据结构中的树
    Java探究心得之三元运算符
    Java学习心得之各种小算法
    深入Java核心 Java内存分配原理(转)
    java中继承与初始化顺序
    jsp 获取表单传过来的参数值含有中文字符
    转:父类私有变量是否被子类继承详细解说(答案:内存中存在,但sun公司定义为不继承)
  • 原文地址:https://www.cnblogs.com/jiayaguang/p/4380369.html
Copyright © 2011-2022 走看看