###本文講述全新基於@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
註解。
暫只給出代碼中已有的部分示例鏈接,有任何問題或建議可 聯繫作者。