Android Studio代码混淆-第三方jar混淆汇总(持续更新)

前言

Android有非常多的优秀的第三方开源jar包,我们经常在我们的项目中使用了不少jar包,但是往往到了release的时候就忘了混淆第三方jar包了,会给我们开发带来不少麻烦,所有在这里汇总一下一些比较热门的第三方jar包的混淆方式,方便大家开发。本篇文章会持续更新,如果你有其它jar包的混淆使用方式也可以告知我,以便可以更好的为大家提供一份较为完整实例。
本博客同步发布于 XueLong的博客

常用第三方开源jar包

排名不分先后(按首字母顺序排列)

Android-gif-drawable 链接

-keep public class pl.droidsonroids.gif.GifIOException{<init>(int);}

-keep class pl.droidsonroids.gif.GifInfoHandle{<init>(long,int,int,int);}

Android-Universal-Image-Loader 链接

#Universal Image Loader
-keep class com.nostra13.universalimageloader.** { *; }

-keepattributes Signature

ButterKnife 链接

-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keep class **$$ViewInjector

-keepclasseswithmembernames class * {    
   @butterknife.* <fields>;
}
-keepclasseswithmembernames class * {    
   @butterknife.* <methods>;
}

Bugly 链接

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

EventBus 链接

-keepclassmembers class ** {
    public void onEvent*(***);
}

# Only required if you use AsyncExecutor
-keepclassmembers class * extends de.greenrobot.event.util.ThrowableFailureEvent {
    public <init>(java.lang.Throwable);
}

# Don't warn for missing support classes
-dontwarn de.greenrobot.event.util.*$Support
-dontwarn de.greenrobot.event.util.*$SupportManagerFragment

Fabric Twitter Kit 链接

-dontwarn com.squareup.okhttp.**
-dontwarn com.google.appengine.api.urlfetch.**
-dontwarn rx.**
-dontwarn retrofit.**
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
    @retrofit.http.* *;
}

Fastjson 链接

-dontwarn com.alibaba.fastjson.**
-keepattributes Signature
-keepattributes *Annotation*

Glide 链接

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.AppGlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule

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

环信SDK 链接

-keep class com.easemob.** {*;}
-keep class org.jivesoftware.** {*;}
-keep class org.apache.** {*;}
-dontwarn  com.easemob.**
#2.0.9后的不需要加下面这个keep
#-keep class org.xbill.DNS.** {*;}
#另外,demo中发送表情的时候使用到反射,需要keep SmileUtils
-keep class com.easemob.chatuidemo.utils.SmileUtils {*;}
#注意前面的包名,如果把这个类复制到自己的项目底下,比如放在com.example.utils底下,应该这么写(实际要去掉#)
#-keep class com.example.utils.SmileUtils {*;}
#如果使用easeui库,需要这么写
-keep class com.easemob.easeui.utils.EaseSmileUtils {*;}
#2.0.9后加入语音通话功能,如需使用此功能的api,加入以下keep
-dontwarn ch.imvs.**
-dontwarn org.slf4j.**
-keep class org.ice4j.** {*;}
-keep class net.java.sip.** {*;}
-keep class org.webrtc.voiceengine.** {*;}
-keep class org.bitlet.** {*;}
-keep class org.slf4j.** {*;}
-keep class ch.imvs.** {*;}

LitePal 链接

-keep class org.litepal.** {
    *;
}

-keep class * extends org.litepal.crud.DataSupport {
    *;
}

Okhttp 链接

-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**

OkhttpUtils 链接

#okhttputils
-dontwarn com.zhy.http.**
-keep class com.zhy.http.**{*;}

#okhttp
-dontwarn okhttp3.**
-keep class okhttp3.**{*;}

#okio
-dontwarn okio.**
-keep class okio.**{*;}

Picasso 链接

-dontwarn com.squareup.okhttp.**

Retrofit2 链接

-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions

-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}

RxJava 链接

-keep class rx.schedulers.Schedulers {
    public static <methods>;
}
-keep class rx.schedulers.ImmediateScheduler {
    public <methods>;
}
-keep class rx.schedulers.TestScheduler {
    public <methods>;
}
-keep class rx.schedulers.Schedulers {
    public static ** test();
}

ShareSDK 链接

-keep class cn.sharesdk.**{*;}
-keep class com.sina.**{*;}
-keep class **.R$* {*;}
-keep class **.R{*;}
-dontwarn cn.sharesdk.**
-dontwarn **.R$*
-dontwarn com.tencent.**
-keep class com.tencent.** {*;}

SlidingMenu 链接

-dontwarn com.jeremyfeinstein.slidingmenu.lib.**
-keep class com.jeremyfeinstein.slidingmenu.lib.**{*;}

补充几个非常不错的代码混淆相关的开源项目

AndResGuard 链接

Android 源混淆

android-proguard-snippets 链接

一个更棒的项目,几乎整合了所有常见的第三方jar包的混淆方式。

写在最后

以上就是目前所整理的第三方开源jar包的代码混淆方式,如果你有其他的jar包的使用方式可以给我留言,我会添加上去。

如果你在参考过程中遇到问题,可以在我的联系方式中给我提问。

后面会继续介绍,Android的相关知识,欢迎继续关注我博客的更新。

参考资源

转载请注明:XueLong的博客 » Android Studio代码混淆-第三方jar混淆汇总(持续更新)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,284评论 25 708
  • 1、 github排名 https://github.com/trending,github搜索:https://...
    GB_speak阅读 9,884评论 2 117
  • 今天听了楼一蕾的语音晨享,对自己的触动还是挺大的!持久战,这一场没有硝烟却很残酷的战争。因为要先改变自己,让自己成...
    旦子阅读 93评论 0 2
  • 一 小时候,我是散长的野草,穿着碎花小背心,下面穿着大裤衩,头发蓬着,小脸又黑又脏,还流着一长串鼻涕,在水塘里捉泥...
    新意燕儿阅读 744评论 5 5
  • ⒈每月为自己,航哥哥,小王子买一本书!并叮嘱看完,写感想! ⒉准备招教,考研,心理咨询师证!(哪项接近考试哪项优先...
    李豫一阅读 184评论 0 2