zoukankan      html  css  js  c++  java
  • 代码混淆遇到的问题

    代码混淆 在java 里面是一个重要的保护代码手段之一

    之前用 ant 打包 

    今天试了用 proguard来打包 

    因为我的项目要用到 

    httpclient 包 

    开始导入时会出现一大堆警告 然后就不能输入程序 

    此时应在proguard.cfg文件中添加 -ignorewarnings 隐藏所有警告

    当程序跑起来后 一遇到有调用 httpclient 时就会报错  说找不到 源码

    我知道这是代码混淆后的问题 查了 proguard官网

    原来 proguard 会优化你的代码 将不必要的代码删除 

    如果你要保留 则需要设置相应的 规则

    如我上面引入了 三个包

    所以要为每个包保留 不进行混淆操作

     1 -keep public class org.apache.commons.logging.** { public protected *;}
     2 -keep public class org.apache.commons.logging.impl.** { public protected *;}
     3 
     4 -keep public class org.apache.commons.httpclient.** {public protected *;}
     5 -keep public class org.apache.commons.httpclient.auth.** {public protected *;}
     6 -keep public class org.apache.commons.httpclient.cookie.** {public protected *;}
     7 -keep public class org.apache.commons.httpclient.methods.** {public protected *;}
     8 -keep public class org.apache.commons.httpclient.params.** {public protected *;}
     9 -keep public class org.apache.commons.httpclient.protocol.** {public protected *;}
    10 -keep public class org.apache.commons.httpclient.util.** {public protected *;}
    11 
    12 -keep public class org.apache.commons.codec.** {public protected *;}
    13 -keep public class org.apache.commons.codec.binary.** {public protected *;}
    14 -keep public class org.apache.commons.codec.digest.** {public protected *;}
    15 -keep public class org.apache.commons.codec.language.** {public protected *;}
    16 -keep public class org.apache.commons.codec.net.** {public protected *;}

    后面二行可选的

    1 -keep public class com.google.gdata.util.common.base.** { public protected *; }
    2 
    3 
    4 -keep public class android.** { public protected private *; }

    如此程序便可正常运行

    另外 集成在 SDK 中的proguard太旧直接使用会有很多问题 只要你从官网下载最新版本便会解决问题 到目前为止最新版为 4.8

    复盖 bin lib 文件夹就可以了

    欢迎各位同学加入 android 技术群 155595043

    个人微博: http://weibo.com/338226333

    有问题可以微博商讨

  • 相关阅读:
    在bindingNavigator1中加入具有更好体验性的DateTimePicker
    static的初始化顺序 (转)
    C#数据结构求最大公约数和最小公倍数[辗转相除法]
    DataGridView控件显示行号
    C# 小票打印机 直接打印 无需驱动[转]
    Core Data 中遇到的一些问题
    字符指针不分配存储区,字符常量存储于静态数据区
    传送门
    Error Set
    实现类似iPhone通讯录新增名片,保存,之后可进行编辑操作的功能
  • 原文地址:https://www.cnblogs.com/ondream/p/2445468.html
Copyright © 2011-2022 走看看