您的位置:首页 > 编程语言

安卓代码混淆说明

2016-04-21 11:48 281 查看
安卓混淆说明
参考网址
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: