Android proguard混淆的一些理解
Mr.wu edited this page May 9, 2017
·
1 revision
-
ProGuard是一个开源的Java代码混淆器。它可以混淆Android项目里面的java代码,对的,你没看错,仅仅是java代码。它是无法混淆Native代码,资源文件drawable、xml等。
-
ProGuard作用 压缩: 移除无效的类、属性、方法等 优化: 优化字节码,并删除未使用的结构 混淆: 将类名、属性名、方法名混淆为难以读懂的字母,比如a,b,c
-
混淆注意事项
- 不能混淆
在AndroidManifest中配置的类,比如四大组件 JNI调用的方法 反射用到的类 WebView中JavaScript调用的方法 Layout文件引用到的自定义View 一些引入的第三方库(一般都会有混淆说明的) 这里推荐两个开源项目,里面收集了一些第三方库的混淆规则
在Module下的build.gradle文件中将minifyEnabled false改为minifyEnabled true。
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
其中:proguardFiles getDefaultProguardFile('proguard-android.txt')表示获取SDK下'proguard-android.txt‘文件中的默认混淆规则。 'proguard-rules.pro'表示使用项目根目录下的 'proguard-rules.pro'文件中的混淆规则。