安卓代码混淆

混淆模板:

-optimizationpasses 5          # 指定代码的压缩级别
-dontusemixedcaseclassnames   # 是否使用大小写混合
-dontskipnonpubliclibraryclasses
-dontpreverify           # 混淆时是否做预校验
-verbose                # 混淆时是否记录日志

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

#忽略警告
#-ignorewarning

##记录生成的日志数据,gradle build时在本项目根目录输出##

#apk 包内所有 class 的内部结构
-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   # 保持哪些类不被混淆

#第三方库的混淆
##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.混淆原则,自己写的代码比较好混淆,第三方库如果打包正式版提示如下图:


混淆第三方库出错.png

则说明混淆出错了,需要keep住不混淆他们,加入对应的混淆代码

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

2.如果混淆后发生闪退,找到闪退的位置,哪个类里面有哪些控件或者第三方引用,对其进行keep,最常见的就是实体类的混淆错误,只需要keep住就好,如下

##实体类混淆
-keep class com.hk.javalearn.model.** { *; }

3.别忘了在app.build打开混淆
minifyEnabled true

你可能感兴趣的:(安卓代码混淆)