# Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in D:\android_studio\sdk/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the proguardFiles # directive in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # Add any project specific keep options here: # 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 # 是否使用大小写混合 -dontpreverify # 混淆时是否做预校验 -verbose # 混淆时是否记录日志 -dontskipnonpubliclibraryclasses -keepattributes SourceFile,LineNumberTable -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法 #保护注解 -keepattributes *Annotation* #忽略警告 -ignorewarning #如果用到了反射就需要加 -keepattributes EnclosingMethod #-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.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 # 保持哪些类不被混淆 -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>; } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * {# 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View); } -keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } #保持 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 <fields>; !private <fields>; !private <methods>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆 -keepclassmembers class * { void *(**On*Event); void *(**On*Listener); } #如果引用了v4或者v7包 -dontwarn android.support.** -dontwarn android.support.v4.** -keep class android.support.v4.** { *; } -keep public class * extends android.support.v4.** -keep public class * extends android.app.Fragment #参数来保持第三方库中的类而不乱,-dontwarn和-keep 结合使用,意思是保持com.xx.bbb.**这个包里面的所有类和所有方法而不混淆,接着还叫ProGuard不要警告找不到com.xx.bbb.**这个包里面的类的相关引用。 #这个是pos机支付的 -dontwarn com.ums.plugin.** -keep class com.ums.plugin.** { *;} #这个是pos机的 -dontwarn com.ums.upos.** -keep class com.ums.upos.** { *;} #扫码二维码 com\karics\library -dontwarn com.karics.library.** -keep class com.karics.library.** { *;} #okhttputils -dontwarn com.zhy.http.** -keep class com.zhy.http.**{*;} #okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} #okio -dontwarn okio.** -keep class okio.**{*;} -dontwarn org.apache.http.** -keep class org.apache.http.**{*;} # ButterKnife -keep class butterknife.** { *;} -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *;} -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; } # EventBus -keepattributes *Annotation* -keepclassmembers class ** { @org.greenrobot.eventbus.Subscribe <methods>; } -keep enum org.greenrobot.eventbus.ThreadMode { *;} #gif -dontwarn pl.droidsonroids.gif.** -keep class pl.droidsonroids.gif.**{*;} #pullrefresh -dontwarn com.handmark.pulltorefresh.library.** -keep class com.handmark.pulltorefresh.library.** { *;} -dontwarn com.handmark.pulltorefresh.library.extras.** -keep class com.handmark.pulltorefresh.library.extras.** { *;} -dontwarn com.handmark.pulltorefresh.library.internal.** -keep class com.handmark.pulltorefresh.library.internal.** { *;} #gson #如果用用到Gson解析包的,直接添加下面这几行就能成功混淆,不然会报错。 -keepattributes Signature # Gson specific classes -keep class sun.misc.Unsafe { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.google.gson.** { *; } -keep class com.google.gson.stream.** { *; } # 将下面替换成自己的实体类 -keep class com.jbt.pos.pay.bean.** { *;}
Android中apk发布时代码混淆模板
猜你喜欢
转载自blog.csdn.net/u010367265/article/details/80843067
今日推荐
周排行