ProGuard就應該用註解@Annotation來配置 頂 原

###本文講述全新基於@Annotation的混淆配置方法 摘自我的源碼README.md

  • 實現原理及目標已經在 源文件 註釋中註明。


###概念、規則定義及解釋

  • []保留:既不被重命名,又不被刪除;

  • []保留:只確保不被重命名,不保證不被刪除;

  • []保留:不保證不被重命名,但確保不被刪除;

  • []保留:排除到以上保留名單之外。

  • 優先級

    • 由高到低依次爲強、反、弱、不。被延續到子類(接口)的,子類享有相同優先級;
    • 任何位置,若被不同優先級的註解同時標註,則會應用較高優先級。
  • 符號約定

    • 含有[$$]字符的爲反保留。如:@Keep$$

    • 含有[$]字符(除反保留外)的爲強保留。如:@Keep$

    • 不含以上標識字符的爲弱保留

    • 沒有用於不保留的標籤,即:不加任何標註則爲不保留;

    • 另:以[e]結尾的表示將其前面名稱表達的功能延續到子類。如:@KeepMp$e

      需要注意的是:只有父類(接口)存在的情況下,才能延續到子類。 即:首先需要將父類強保留或反保留。

  • 類名@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註解。

暫只給出代碼中已有的部分示例鏈接,有任何問題或建議可 聯繫作者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章