Proguard.cfg 配置


 

  •    -optimizationpasses 5 //代碼混淆壓縮比 默認為5 一般不需要改 -dontusemixedcaseclassnames //混淆后的類名為小寫  如public class a    
  • -dontskipnonpubliclibraryclasses //混淆第三方  庫  加上此句后 可再后面配置某些庫不混淆 -dontpreverify // 混淆前認證,可去掉加快混淆速度
  •  -verbose //混淆的log 幫助排錯
  • -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  //代碼混淆采用的算法,一般不改變,用谷歌推薦算即可
  • -keepattributes *Annotation* 假如項目中有用到注解 應用加入
  •    引用外部的jar包 如果不是自己寫的 最好不混淆它們,因為外部jar包有可能已經混淆過,根據實際情況來 不混淆某些外部jar
   保持外部jar包不變的方法
-dontwarn android.support.v4.** //執行下面一行代碼如果有警告也不用中止,因為此jar不是我們自己寫的,有警告也不處理,故dontwarn
-keep class android.support.v4.** //項目中用到此jar包,在打包時必須不混淆,否則用ViewPager時必crash,原因很簡單,ViewPager是一個自定義view,在布局中用類的全名來
定義此布局,混淆后類名和包名改變,xml布局無法再通過類名打到此自定義view

如果你的項目中用到了webview的復雜操作
加入此兩行代碼
-keepclassmembers class * extends android.webkit.WebViewClient {
     public void *(android.webkit.WebView,java.lang.String,android.graphics.Bitmap);
     public boolean *(android.webkit.WebView,java.lang.String);
}

-keepclassmembers class * extends android.webkit.WebChromeClient {
     public void *(android.webkit.WebView,java.lang.String);
}



經過實戰檢驗,做騰訊QQ登錄,如果引用他們提供的jar,若不加防止WebChromeClient混淆的代碼,oauth認證無法回調,反編譯基代碼后可看到他們有用到WebChromeClient,加入此代碼即可,
不過還是建議不要用他們提供的jar包做oauth認證,至於為啥,不解釋
正常開發 系統默認的混淆再加上以上基本的混淆即可滿足,更多需求還需要去閱文檔
用到了anroid支持包加入
-libraryjars   libs/android-support-v4.jar
-dontwarn android.support.v4.**    
-keep class android.support.v4.** { *; }  
-keep interface android.support.v4.app.** { *; }  
-keep public class * extends android.support.v4.**  
-keep public class * extends android.app.Fragment

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM