As混淆详解

xiaoxiao2021-02-28  72

#忽略警告,避免打包时某些警告出现 -ignorewarnings #指定压缩级别 -optimizationpasses 5 #包名不混合大小写 -dontusemixedcaseclassnames #不跳过非公共的库的类 -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers #不优化输入的类文件 -dontoptimize #关闭预校验 -dontpreverify #混淆时记录日志 -verbose -printmapping proguardMapping.txt #混淆时采用的算法 -optimizations !code/simplification/cast,!field/*,!class/merging/* #保护注解 -keepattributes *Annotation*,InnerClasses -keepattributes Signature #保留行号 -keepattributes SourceFile,LineNumberTable #keep相关注解 -keep class android.support.annotation.Keep -keep @android.support.annotation.Keep class * {*;} -keepclasseswithmembers class * { @android.support.annotation.Keep <methods>; } -keepclasseswithmembers class * { @android.support.annotation.Keep <fields>; } -keepclasseswithmembers class * { @android.support.annotation.Keep <init>(...); } -keep public class * extends android.app.Activity -keep public class * extends android.app.Appliction -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 * extends android.view.View -keep public class com.android.vending.licensing.ILicensingService -keep class android.support.** {*;} #保持所有拥有本地方法的类名及本地方法名 -keepclasseswithmembernames class * { native <methods>; } #保持Activity中View及其子类入参的方法 -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } #枚举 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } #保持自定义View的get和set相关方法 -keep public class * extends android.view.View{ *** get*(); void set*(***); public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); } #Parcelable -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } #Fragment不需要在AndroidManifest.xml中注册,需要额外保护下 -keep public class * extends android.support.v4.app.Fragment -keep public class * extends android.app.Fragment #保持所有实现Serializable接口的类成员 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -keep class **.R$* { *; } -keepclassmembers class * { void *(**On*Event); } #webview -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } -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.webViewClient { public void *(android.webkit.webView, jav.lang.String); } -ignorewarnings                     # 忽略警告,避免打包时某些警告出现 -optimizationpasses 5               # 指定代码的压缩级别 -dontusemixedcaseclassnames         # 是否使用大小写混合 -dontskipnonpubliclibraryclasses    # 是否混淆第三方jar -dontpreverify                      # 混淆时是否做预校验 -verbose                            # 混淆时是否记录日志 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*        # 混淆时所采用的算法   -libraryjars   libs/treecore.jar   -dontwarn android.support.v4.**     #缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类,没有正确引用。如果不配置的话,系统就会报错。 -dontwarn android.os.** -keep class android.support.v4.** { *; }        # 保持哪些类不被混淆 -keep class com.baidu.** { *; }  -keep class vi.com.gdi.bgl.android.**{*;} -keep class android.os.**{*;}   -keep interface android.support.v4.app.** { *; }  -keep public class * extends android.support.v4.**  -keep public class * extends android.app.Fragment   -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.support.v4.widget -keep public class * extends com.sqlcrypt.database -keep public class * extends com.sqlcrypt.database.sqlite -keep public class * extends com.treecore.** -keep public class * extends de.greenrobot.dao.**     -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); }   -keep class * implements android.os.Parcelable {    # 保持 Parcelable 不被混淆   public static final android.os.Parcelable$Creator *; }   -keep class MyClass;                              # 保持自己定义的类不被混淆
转载请注明原文地址: https://www.6miu.com/read-32876.html

最新回复(0)