收集一些Android常用混淆代码

反编译过别人的jar或者apk的小伙伴肯定会发现大量的类名,方法名,变量名等等,都被替换成了a,b,c,d之类的字母,造成难以阅读。代码混淆是保障我们代码安全的一种有力手段,但是并不是所有代码都需要被混淆的,不恰当的混淆可能导致项目无法正常运行。下面收集一些开发当中常用的一些三方依赖的混淆代码。

1.ButterKnife

# Retain generated class which implement Unbinder.
-keep public class * implements butterknife.Unbinder { public (...); }

# Prevent obfuscation of types which use ButterKnife annotations since the simple name
# is used to reflectively look up the generated ViewBinding.
-keep class butterknife.*
-keepclasseswithmembernames class * { @butterknife.* ; }
-keepclasseswithmembernames class * { @butterknife.* ; }

2.Gson

##---------------Begin: proguard configuration for Gson ----------
# 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.** { *; }

# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

##---------------End: proguard configuration for Gson ----------

注意上面代码中的-keep class com.google.gson.examples.android.model.** { *; }仅仅是一个示例,照抄过去是没有作用的。这里我们需要避免混淆的是需要经过Gson序列化的实体类,开发过程中我们通常将实体类放在同一个包下,这里直接写包路径即可。

3.Glide

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
     **[] $VALUES;
     public *;
}
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule

4.支付宝支付

-libraryjars libs/alipaySDK-20150602.jar
 
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}

第一行中alipaySDK-20150602.jar为jar包名称,注意替换为自己使用的jar包。

5.微信支付

-keep class com.tencent.mm.sdk.** {*;}

6.EventBus

-keepattributes *Annotation*
-keepclassmembers class ** {
    @org.greenrobot.eventbus.Subscribe ;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
 
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    (java.lang.Throwable);
}

7.xUtils3

-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 ;
}

8.个推

-dontwarn com.igexin.**
-keep class com.igexin.**{*;}

8.Retrofit2.1.0

# Platform calls Class.forName on types which do not exist on Android to determine platform.
-dontnote retrofit2.Platform
# Platform used when running on RoboVM on iOS. Will not be used at runtime.
-dontnote retrofit2.Platform$IOS$MainThreadExecutor
# Platform used when running on Java 8 VMs. Will not be used at runtime.
-dontwarn retrofit2.Platform$Java8
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions

9.高德地图

    3D 地图
    -keep   class com.amap.api.maps.**{*;} 
    -keep   class com.autonavi.amap.mapcore.*{*;} 
    -keep   class com.amap.api.trace.**{*;}

     定位
    -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.**{*;}

    导航
    -keep class com.amap.api.navi.**{*;}
    -keep class com.autonavi.**{*;}

10.Bugly

-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}

有任何疑问,欢迎加群讨论:261386924

文章同步更新于微信公众号: 秉心说 , 专注 Java 、 Android 原创知识分享,LeetCode 题解,欢迎关注!

收集一些Android常用混淆代码_第1张图片
qrcode_for_gh_de090eed4f33_258.jpg

你可能感兴趣的:(收集一些Android常用混淆代码)