您的位置:首页 > 移动开发 > Android开发

Android 之 打包混淆ProGuard

2016-06-24 14:07 627 查看
[b]打包后的几个很重要的文件[/b]

需要记住的目录:

在Android studio的build文件夹下,build/outputs/mapping/下的文件

dump.txt 这个文件描述了APK中的class 文件的内部结构

mapping.txt 这个文件提供了一个对照列表,即原始的名字和混淆后的名字的对照表,在我们发布应用后收集到的bug 日志,需要根据这个表来进行定位bug的位置。

seeds.txt 这个文件列出了没有被混淆的类和成员

usage.txt 这个文件列出了被从APK文件中删除掉的代码

关于如何进行打包混淆

build.gradle 文件

buildTypes{
release {
minifyEnable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}


通过getDefaultProguardFile函数加载默认的混淆配置文件,这里是proguard-android.txt,这个文件android studio 会到我们的SDK目录tools/proguard/文件夹下面去加载。在该文件夹下面我们也可以使用proguard-android-optimize.txt文件,这个文件和proguard-android.txt的混淆规则是一样的,但是还增加了一些优化,这些优化深入到字节码(.class file 也就是说会深入到方法中去进行优化)进行来进一步减少APK的大小并且提高运行速度。

剩下一个文件就是我们进行自定义混淆规则的文件,proguard-rules.pro 因为有些时候android studio在混淆时会把一些我们不希望进行混淆的类或者方法给混淆了,这个时候我们就需要在这个文件中列出我们不希望进行混淆的类或者方法,具体如何编写如下:

progurad-rules.pro 主要使用下面这些关键字来保持某些代码不被加入到混淆规则中去:

keep

keepclassmembers

keepclassmemebernames

keepclasswithmembers

keepclasswithmembernames

keepattributes

keepnames

keepdirectories

keepparameternames

keeppackagenames

keep*等关键字的作用和用法见下表:

keep关键字作用示例
keep通用保持一个类的某些方法或者成员不被混淆keep class com.xiaolei.model.csdndemo.* {
*;
}
。。。。待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: