Android混淆规则
16lz
2021-01-25
# If your project uses WebView with JS, uncomment the following# and specify the fully qualified class name to the JavaScript interface# class:#-keepclassmembers class fqcn.of.javascript.interface.for.webview {# public *;#}# 指定代码的压缩级别-optimizationpasses 5# 是否使用大小写混合-dontusemixedcaseclassnames# 是否混淆第三方jar-dontskipnonpubliclibraryclasses-dontoptimize# 预校验-dontpreverify# 混淆时是否记录日志-verbose# 混淆时所采用的算法-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*# 保护注解#-keepattributes *Annotation*#避免混淆泛型 如果混淆报错建议关掉#-keepattributes Signature# 保持哪些类不被混淆-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.Service-keep public class * extends android.app.IntentService-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class * extends android.app.backup.BackupAgentHelper-keep public class * extends android.preference.Preference-keep public class com.android.vending.licensing.ILicensingService-keep public class * extends android.support.v4.app.Fragment#忽略警告-ignorewarning##记录生成的日志数据,gradle build时在本项目根目录输出###apk 包内所有 class 的内部结构-dump class_files.txt#未混淆的类和成员-printseeds seeds.txt#列出从 apk 中删除的代码-printusage unused.txt#混淆前后的映射#-printmapping mapping.txt########记录生成的日志数据,gradle build时 在本项目根目录输出-end###########混淆保护自己项目的部分代码以及引用的第三方jar包library########-libraryjars libs/umeng-analytics-v5.2.4.jar#三星应用市场需要添加:sdk-v1.0.0.jar,look-v1.0.1.jar#-libraryjars libs/sdk-v1.0.0.jar#-libraryjars libs/look-v1.0.1.jar#如果引用了v4或者v7包-dontwarn android.support.**-keep class android.support.** {*; }####混淆保护自己项目的部分代码以及引用的第三方jar包library-end####-keep public class * extends android.view.View { public (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); public void set*(...);}#保持 native 方法不被混淆-keepclasseswithmembernames class * { native ; }#保持自定义控件类不被混淆-keepclasseswithmembers class * { public (android.content.Context); }-keepclasseswithmembernames class * { public (android.content.Context, android.util.AttributeSet); }-keepclasseswithmembernames class * { public (android.content.Context, android.util.AttributeSet, int); }#保持 Parcelable 不被混淆-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *;}#保持 Serializable 不被混淆-keepnames class * implements java.io.Serializable#保持 Serializable 不被混淆并且enum 类也不被混淆-keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient ; !private ; !private ; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); public void set*(***); public *** get*();}#保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);}-keepclassmembers class * { public void *ButtonClicked(android.view.View);}#不混淆资源类-keepclassmembers class **.R$* { public static ; }# Gson uses generic type information stored in a class file when working with fields. Proguard# removes such information by default, so configure it to keep all of it.-keepattributes Signature# For using GSON @Expose annotation-keepattributes *Annotation*# Gson specific classes-keep class sun.misc.Unsafe { *; }#-keep class com.google.gson.stream.** { *; }# Application classes that will be serialized/deserialized over Gson#-keep class com.google.gson.examples.android.model.** { *; }#第三方jar包-keep class com.nostra13.universalimageloader.** { *; }-keep class com.android.volley.** {*; }-keep class org.apache.http.** {*; }
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Android(安卓)view刷新
- Robotium_Automated UI testing for Android(安卓)applications
- Android(安卓)系统编译环境设置及源代码编译
- Android开源项目分类汇总
- android 添加混淆
- DrawerLayout中加入多个View
- AndroidManifest.xml简单解析