###本文讲述全新基于@Annotation
的混淆配置方法 摘自我的源码README.md
- 实现原理及目标已经在 源文件 注释中注明。
###概念、规则定义及解释
-
[
强
]保留
:既不被重命名,又不被删除; -
[
弱
]保留
:只确保不被重命名,不保证不被删除; -
[
反
]保留
:不保证不被重命名,但确保不被删除; -
[
不
]保留
:排除到以上保留名单之外。 -
优先级
- 由高到低依次为强、反、弱、不。被延续到子类(接口)的,子类享有相同优先级;
- 任何位置,若被不同优先级的注解同时标注,则会应用较高优先级。
-
符号约定
-
类名
@KeepXxx
后面的其它字母符号-
[
V
]:var, 成员变量或常量; -
[
M
]:method, 方法或函数; -
[
C
]:constructor, 构造方法; -
[
p
]:public变量或方法,取决于组合的是V
还是M
。没有本字符则表示忽略访问权限修饰; -
[
s
]:static变量或方法,没有则表示非static的。细节请参见各注解的源码文档。
-
-
其它:
- 对于 **.anno.inject 包中的任何注解,只要该注解没有被优化掉,就会对其直接作用的内容进行反保留。
- 更多内容请见 @Keep 源码文档。
###使用方法:
####1. 在主module根目录下的混淆配置文件 proguard-rules.pro
(或其他名称)的开头加入下列代码:
#gradle配置中最好启用优化。即引用'proguard-android-optimize.txt'
#proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
-include libs/annotations.pro
#如果是以jar包的方式导入的而不是作为库项目,那么需要下面两行:
-dontwarn hobby.wei.c.**
-libraryjars libs/wei.lib2a.jar
-keep class com.google.gson.stream.** { *; }
####2. 根据需求在代码中添加@KeepXxx
注解。
暂只给出代码中已有的部分示例链接,有任何问题或建议可 联系作者。