安卓代碼混淆

混淆模板:

-optimizationpasses 5          # 指定代碼的壓縮級(jí)別
-dontusemixedcaseclassnames   # 是否使用大小寫混合
-dontskipnonpubliclibraryclasses
-dontpreverify           # 混淆時(shí)是否做預(yù)校驗(yàn)
-verbose                # 混淆時(shí)是否記錄日志

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  # 混淆時(shí)所采用的算法
-keepattributes *Annotation*,Signature
-dontwarn android.**

#忽略警告
#-ignorewarning

##記錄生成的日志數(shù)據(jù),gradle build時(shí)在本項(xiàng)目根目錄輸出##

#apk 包內(nèi)所有 class 的內(nèi)部結(jié)構(gòu)
-dump class_files.txt
#未混淆的類和成員
-printseeds seeds.txt
#列出從 apk 中刪除的代碼
-printusage unused.txt
#混淆前后的映射
-printmapping mapping.txt

#自寫代碼的混淆
-keep public class * extends android.app.Activity      # 保持哪些類不被混淆
-keep public class * extends android.app.Application   # 保持哪些類不被混淆

#第三方庫(kù)的混淆
##okhttp3混淆
-keep class okhttp3.** {*;}
-dontwarn okhttp3.**

##okio混淆
-keep class okio.** {*;}
-dontwarn okio.**

##alibaba混淆
-keep class com.alibaba.** {*;}
-dontwarn com.alibaba.**

-keepattributes Exceptions,SourceFile
-renamesourcefileattribute Proguard
-keepattributes SourceFile,LineNumberTable
-repackageclasses

-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int d(...);
    public static int w(...);
    public static int v(...);
    public static int i(...);
    public static int e(...);
}
# Model類都不混淆
-keep class com.hk.javalearn.model.** { *; }
#

1.混淆原則,自己寫的代碼比較好混淆,第三方庫(kù)如果打包正式版提示如下圖:


混淆第三方庫(kù)出錯(cuò).png

則說明混淆出錯(cuò)了,需要keep住不混淆他們,加入對(duì)應(yīng)的混淆代碼

##okhttp3混淆
-keep class okhttp3.** {*;}
-dontwarn okhttp3.**

2.如果混淆后發(fā)生閃退,找到閃退的位置,哪個(gè)類里面有哪些控件或者第三方引用,對(duì)其進(jìn)行keep,最常見的就是實(shí)體類的混淆錯(cuò)誤,只需要keep住就好,如下

##實(shí)體類混淆
-keep class com.hk.javalearn.model.** { *; }

3.別忘了在app.build打開混淆
minifyEnabled true

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容