安卓代码混淆说明

安卓混淆说明

参考网址

       CSDN郭霖关于反编译与混淆的说明

       http://blog.csdn.net/guolin_blog/article/details/50451259

       安卓官方对于ProGuard的说明

       http://androiddoc.qiniudn.com/tools/help/proguard.html

       Proguard官网国内镜像地址

       https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs

1.       混淆简介
         ProGuard完整的流程有四个步骤,分别是shrinker,optimizer, obfuscator, and preverifier对应源码压缩,字节码优化,代码混淆,预校验,ProGuard配置文件中可以选择对这四个功能进行打开或者关闭,其中最常用的就是obfuscator代码混淆
         obfuscator代码混淆的作用是将代码中的标识符变成无意义的字符,使得软件反编译之后关键信息不被暴露

2.       开启混淆
在AndroidStudio的build.gradle中的

buildTypes {

        debug {

            signingConfig signingConfigs.myConfig

        }

        release {

            signingConfigsigningConfigs.myConfig

            minifyEnabled true

            proguardFiles                             getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

        }

  }
其中release闭包中的minifyEnabled字段为true意思是使用混淆,默认为false,默认混淆只在release版本中开启

3.       配置混淆文件
    1.通用配置文件,位置 \sdk\tools\proguard\proguard-android.txt
          对所有工程都有影响,使用默认配置即可。
    2. AndroidStudio中每个Module下面都有一个proguard-rules.pro文件用             于单独设置Module的混淆规则
    3.语法说明,郭霖博客中对通用配置以及keep有详细说明   http://blog.csdn.net/guolin_blog/article/details/50451259 

4.       保存生成的map文件
    混淆后在\app\build\outputs\mapping\release文件夹中生产三个文件,其中mapping文件是混淆前后名称的对比,可使用这个文件对混淆后代码进行唤还原,官方说明中提到每次混淆一定要保留着三个文件,查看错误栈时可以据此还原代码进行查看,具体使用方法官网有说明:
https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/retrace/introduction.html

5.       将生成的apk文件反编译查看混淆效果

6.       测试软件
    代码混淆之后可能会对原有程序产生影响,需要重新对软件进行测试,出现问题根据错误栈信息,查找错误代码修改混淆配置文件

1. 注意事项
    1. -ignorewarnings的使用
      忽略所有warnings,成功build出release版本
      开启混淆开关后,build release版本过程中会出现很多warning导致build失败https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/#manual/troubleshooting.html
这里是对常见错误的一个描述,常见的错误原因就是没有将引用的jar包使用-libraryjars进行说明,解决完之后还会有一些warning,如果确认没有问题,可以使用-ignorewarnings打出release版本
    2. 使用!进行反向操作
       ProGuard支持通配符和正则表达式,
       -keep class!com.xiniu.**,!mh.chartview.** {*;}
       意思是混淆com.xiniu以及mh.chartview包的所有文件
    3. 不能混淆的文件
       1、反射的地方
      
2、系统接口
       3
Jni接口
    4. SDK
官方混淆地址
      友盟share
       http://dev.umeng.com/social/android/quick-integration#9
      UDesk
       http://developer.udesk.cn/android/andriod/#5sdk

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值