zoukankan      html  css  js  c++  java
  • android应用安全——代码安全(android代码混淆)

           android2.3的SDK开始在eclipse中支持代码混淆功能(理论上java都支持混淆,但关键在于如何编写proguard的混淆脚本,2.3的SDK使用简单的配置就可以实现混淆)。使用SDK2.3后,新建的工程下和之前相比,都会多了一个文件“proguard.cfg”。这个文件就是混淆所需的proguard脚本。在工程的"default.properties"中添加这样一句话“proguard.config=proguard.cfg”即可实现混淆(如下图)。


           android4.0SDK,ADT14或者更高版本,项目中没有default.properties文件,只有project.properties文件,找到project.properties文件即可。该文件中有以下两行:

     

    # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
    # proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt



                  根据这段说明,只要将proguard.config前面的#去掉(下图),就可以利用ProGuard来混淆代码了!


          默认的设置是不带优化功能的,下面代码可优化混淆:

    proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt



     

    proguard 配置

    最常用的配置选项
    -dontwarn 缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类,没有正确引用。如果不配置的话,系统就会报错。
    -keep 指定的类和类成员被保留作为 入口 。
    -keepclassmembers 指定的类成员被保留。
    -keepclasseswithmembers 指定的类和类成员被保留,假如指定的类成员存在的话。

     

    使用的JNI、jar时更应该考虑混淆的配置。

     

    混淆更多配置请参考:

    http://developer.android.com/tools/help/proguard.html#configuring

     

    /**
    * @author 张兴业
    *  iOS入门群:83702688
    *  android开发进阶群:241395671
    *  我的新浪微博:@张兴业TBOW
    */

     

     

  • 相关阅读:
    安卓内存的优化
    tcp和udp区别
    安卓中线程之间的通信方式(如何避免ANR)
    ArrayList和LinkedList区别
    Jmeter之接口测试
    C# 解析嵌套json
    C# 微信服务号模板消息中如何换行
    C# 对图片进行缩放拖动
    C# 使用Graphics绘制图片时发生闪烁的问题
    C# DevExpress的RepositoryItem设置UseParentBackground属性的办法
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3168067.html
Copyright © 2011-2022 走看看