一 代码混淆的意义
代码混淆的一个主要的目的是为了能够保证代码的安全性:我们的代码发布出去以后,有的用户可能会使用某些反编译工具查看我们的代码,为了避免这样的行为,故有代码混淆。
代码混淆以后,原有代码的包名,类名和方法名会被修改。
二、mapping文件位置
此路径为: app\build\outputs\mapping{}发布渠道}\release\mapping.txt
如果不存在就在gradle中配置:
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
在proguard-rules.pro中配置:
-printseeds seeds.txt
-printmapping mapping.txt
-printusage unused.txt
- 文件说明:
dump.txt : 描述.apk文件中所有类文件间的内部结构
mapping.txt :列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。
seeds.txt :列出了未被混淆的类和成员
usage.txt : 列出了从.apk中删除的代码
三、实例操作
- 混淆后:
java.lang.ArithmeticException: divide by zero
at com