1.参考资料 https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html 官方文档及网上博客 最近的项目总结
2. Android Studio(以后简称AS) 下默认有proguard-project.txt ,为混淆的配置文件 配置路径在该工程下的gradel中。实际为一个 proguard
3混淆对象 proguard默认是所有文件均进行混淆
在下列情况一般不进行混淆 :
a 四大组件、support包(一般v4、v7)
b 资源文件、r文件
c js调用
d 反射和调用反射的类
e jni调用
f so库、jar包(一般来说已经进行了混淆)
4.基本语法 由于网上资料均 省略这一部分 本文给出重要部分:
a. 通配符 与java类似 *-》代表匹配所有字符 **表示该包类所有类及其子路径的类
b. 如果保持一个类不混淆-keep class 类名 {*;} 类名是全名(包含包名)
c. 保持一个类的子类不被混淆 -keep * extends 类名 { *;} 跟java很像是不是?
e. 保持一个类的单个方法不变 -keepclassmembers class 类名 {可含有通配符的方法名}
f. 保持含有某个方法的类不被混淆 -keepclasseswithmembers class 类名 {可含有通配符的方法名}
5 其他
a.optimize是否采用算法进行压缩
b. shrink是否删除unused(未使用文件)这个要小心如反射等
c-libraryjars为导入的jar包、so库 (只是导入) gradel有些已经配置 就会报一个 ....twice
的错
d 关闭混淆 dontobfuscate
ps :开启混淆 在build.gradel 中开启:buildTypes --》release--》 minifyEnabled
true
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-12-24 04:26:36