proguard用法
来源:互联网 发布:函数式编程思维 编辑:程序博客网 时间:2024/06/05 02:52
使用方式
//buildType下的任一个属性都可以 debug { //开启混淆 minifyEnabled true //指定混淆文件 proguardFiles 'proguard-rules.pro','proguard-extra.pro','proguard-self.pro' }
基本语法
常用选项
- -libraryjars 应用的依赖包,如android-support-v4
- -keep 不混淆某些类
- -keepclassmembers 不混淆类的成员
- -keepclasseswithmembers 指定的类和类成员被保留,假如指定的类成员存在的话。
- -keepnames 不混淆类及其成员名,只在混淆阶段生效。
- -keepclassmembernames 不混淆类的成员名,只在混淆阶段生效。
- -keepclasseswithmembernames 不混淆类及其成员名,假如指定的类成员名存在,只在混淆阶段生效。
- -dontwarn 不提示warnning(缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类,没有正确引用。如果不配置的话,系统就会报错。)
占位符
类的结构
- [ ]代表可选的选项。
- …代表可以定义任意数量的前面的项。
- | 分割两个可以相互替代的项。
- ! 代表相反的情况。
- 缩进只是为了澄清目的意义,实际的配置文件中空格是无关紧要的。
更多
关于proguard更多语法可见:proguard官方文档
不可混淆内容
在代码中根据名字调用的内容不可被混淆。
1. 注解
2. Native 本地方法
3. JNI 代码
4. 枚举类型
5. 反射相关的代码
6. AIDL 所需代码
7. 和 XML 有关联的 class 文件(Proguard 只是针对 class 文件的混淆,而 Android 组件都是通过反射来读取 XML 内信息,如:Activity,Service,ContentProvider,Broadcast,自定义控件,布局文件, AndroidManifest.xml 等)都不可混淆
8. 所有为外部提供的接口和方法尽量保留,因为混淆后文件名被替换,有些被调用对象就可 能找不到源方法。
9. Bean 文件(某些库,比如Gson在使用bean文件时,会根据里面的变量/方法名来解析json串,混淆会导致变量无法被正确赋值)
10. Android 的 R 文件
11. 内部类
12. 第三方类库(含官方 support 库),因为第三方库的不透明性,混淆时尽量保护其不被混淆。
PS:很多第三方库官网提供混淆配置方式,可直接使用官方配置。
13. 自定义 View
14. 实现了 Parcelable 或 Serializable 的序列化类
0 0
- proguard用法
- ProGuard用法
- 混淆(Proguard)用法
- 混淆利器proguard的用法
- ProGuard
- ProGuard
- ProGuard
- ProGuard
- proguard
- ProGuard
- ProGuard
- ProGuard
- proguard
- ProGuard
- ProGuard
- ProGuard
- Proguard
- Proguard
- 中国是全球钢铁行业低迷的罪魁祸首?
- - (void)performSegueWithIdentifier:(NSString *)identifier sender:(nullable id)sender 失效
- RecyclerView Adapter 封装
- Markov Chain(bate)
- 影响Mysql性能的重要参数详解
- proguard用法
- Dom4j中使用xPath
- scoi 010 000 001 110
- ContentProvider
- JNI/NDK开发指南(四)——字符串处理
- Java static关键字
- thinkphp 字母使用方法分析
- matlab/simulink中simscape模块集快速创建物理模型
- 工具类