Android 混淆打包方案
来源:互联网 发布:淘宝虎扑伙伴是真的吗 编辑:程序博客网 时间:2024/05/21 08:40
整理一些基本混淆代码,及常用的第三方混淆
#-------------------------------------------基本不用动区域--------------------------------------------#---------------------------------基本指令区-----------------------------------dontwarn#代码混淆的压缩比例,值在0-7之间-optimizationpasses 5#混淆后类名都为小写-dontusemixedcaseclassnames#指定不去忽略非公共的库的类-dontskipnonpubliclibraryclasses#指定不去忽略非公共的库的类的成员-dontskipnonpubliclibraryclassmembers#不做预校验的操作-dontpreverify#生成原类名和混淆后的类名的映射文件-verbose-printmapping proguardMapping.txt#指定混淆是采用的算法-optimizations !code/simplification/cast,!field/*,!class/merging/*#保护注解-keepattributes *Annotation*,InnerClasses#不混淆泛型-keepattributes Signature#抛出异常时保留代码行号-keepattributes SourceFile,LineNumberTable#----------------------------------------------------------------------------#---------------------------------默认保留区---------------------------------# 保持哪些类不被混淆-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 * extends android.view.View-keep public class com.android.vending.licensing.ILicensingService-keep class android.support.** {*;}#保持 native 方法不被混淆-keepclasseswithmembernames class * { native <methods>;}#保持自定义控件类不被混淆-keepclassmembers class * extends android.app.Activity{ public void *(android.view.View);}#保留枚举类不被混淆-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);}#保留我们自定义控件(继承自View)不被混淆-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 *;}# 保留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();}# 保留R下面的资源-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);}#----------------------------------------------------------------------------#---------------------------------------------------------------------------------------------------
常用的第三方混淆
#---------------------------------2.第三方包---------------#----------->xUtils3.0-keepattributes Signature,Annotation-keep public class org.xutils.** {public protected *;}-keep public interface org.xutils.** {public protected *;}-keepclassmembers class * extends org.xutils.** {public protected *;}-keepclassmembers @org.xutils.db.annotation.* class * {}-keepclassmembers @org.xutils.http.annotation. class * {*;}-keepclassmembers class * {@org.xutils.view.annotation.Event ;}#----------->Retrofit-dontwarn retrofit2.**-keep class retrofit2.** { *; }-keepattributes Signature-keepattributes Exceptions#----------->Retrolambda-dontwarn java.lang.invoke.*#----------->RxJava RxAndroid-dontwarn sun.misc.**-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex;}-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { rx.internal.util.atomic.LinkedQueueNode producerNode;}-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { rx.internal.util.atomic.LinkedQueueNode consumerNode;}#----------->极光推送-dontoptimize-dontpreverify-dontwarn cn.jpush.**-keep class cn.jpush.** { *; }#----------->OkHttp3-dontwarn com.squareup.okhttp3.**-keep class com.squareup.okhttp3.** { *;}-dontwarn okio.**#----------->Okio-dontwarn com.squareup.**-dontwarn okio.**-keep public class org.codehaus.* { *; }-keep public class java.nio.* { *; }#----------->OrmLite-keepattributes *DatabaseField*-keepattributes *DatabaseTable*-keepattributes *SerializedName*-keep class com.j256.**-keepclassmembers class com.j256.** { *; }-keep enum com.j256.**-keepclassmembers enum com.j256.** { *; }-keep interface com.j256.**-keepclassmembers interface com.j256.** { *; }#----------->Gson-keepattributes Signature-keepattributes *Annotation*-keep class sun.misc.Unsafe { *; }-keep class com.google.gson.stream.** { *; }# 使用Gson时需要配置Gson的解析对象及变量都不混淆。不然Gson会找不到变量。# 将下面替换成自己的实体类-keep class com.example.bean.** { *; }#----------->Glide-keep public class * implements com.bumptech.glide.module.GlideModule-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *;}#----------->FastJson-dontwarn com.alibaba.fastjson.**-keep class com.alibaba.fastjson.** { *; }-keepattributes Signature-keepattributes *Annotation*#----------->Fresco-keep class com.facebook.fresco.** {*;}-keep interface com.facebook.fresco.** {*;}-keep enum com.facebook.fresco.** {*;}#----------->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 { *; }#----------->高德地图混淆 #3D 地图 -keep class com.amap.api.mapcore.**{*;} -keep class com.amap.api.maps.**{*;} -keep class com.autonavi.amap.mapcore.*{*;} #定位 -keep class com.amap.api.location.**{*;} -keep class com.amap.api.fence.**{*;} -keep class com.autonavi.aps.amapapi.model.**{*;} #搜索 -keep class com.amap.api.services.**{*;} #2D地图 -keep class com.amap.api.maps2d.**{*;} -keep class com.amap.api.mapcore2d.**{*;} #3导航 -keep class com.amap.api.navi.**{*;} -keep class com.autonavi.**{*;}#----------->集成地图SDK的应用,在打包混淆的时候,需要注意与地图SDK相关的方法不可被混淆。混淆方法如下:-keep class com.baidu.** {*;}-keep class vi.com.** {*;}-dontwarn com.baidu.**#----------->GreenDao混淆:-keep class de.greenrobot.dao.** {*;}-keepclassmembers class * extends de.greenrobot.dao.AbstractDao { public static java.lang.String TABLENAME;}-keep class **$Properties#------->环信-keep class com.hyphenate.** {*;}-keep class com.superrtc.** {*;}-dontwarn com.hyphenate.**
阅读全文
0 0
- Android 混淆打包方案
- Android资源混淆打包方案
- Android-项目中采用的混淆加固多渠道打包方案
- Android 代码混淆,混淆打包
- Android 混淆打包编译
- Android 混淆打包
- android 签名、混淆打包
- Android 混淆打包
- Android混淆打包
- Android混淆打包
- Android 混淆打包
- android中混淆打包
- android proguard混淆打包
- Android 之混淆打包
- Android混淆打包
- android 的混淆打包
- Android混淆打包zz
- Android混淆打包
- JavaScript加性操作符引发的常见错误——弱类型天然错误
- 二进制炸弹实验
- 一个简单的目录节点类定义
- 最近5年133个Java面试问题列表
- lintcode 最后一个单词的长度
- Android 混淆打包方案
- Android ActivityManagerServices基本框架
- PHP 简单的商城网站功能原理
- 和为零的子矩阵-LintCode
- PHP基础知识篇(一)
- BZOJ1087 互不侵犯king(状压DP)
- (五)hadoop路径读取文件的通配符
- 150 多个 ML、NLP 和 Python 相关的教程
- Android Log的多场景使用