这篇接着上篇,上篇文章已经大概介绍了一些常见的坑,以及需要混淆的地方,这篇文章是对上篇的补充,也是最近碰到的一些坑。
首先,讲一下这次遇到的坑,就是环信的。开始已经按官方的混淆,结合网上的一些文章做的混淆,代码如下:
-dontwarn com.easemob.**
-keep class com.easemob.** {*;}
-keep class org.xmlpull.** {*;}
-keep class com.squareup.picasso.* {*;}
-keep class com.hyphenate.* {*;}
-keep class com.hyphenate.chat.** {*;}
-keep class org.jivesoftware.** {*;}
-keep class org.apache.** {*;}
如果使用easeui库,需要这么写
-keep class com.hyphenate.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.** {*;}
-keep class com.easemob.** {*;}
环信3.0
-keep class com.hyphenate.** {*;}
-dontwarn com.hyphenate.**
但是在打包后,总是启动失败,这是很头疼的问题,可能大部分人会想到去写段代码去服务器看错误日志,这里教大家一个小技巧,其实我们不用那么麻烦,只需要用一个root的手机,把日志打开,同时在打包的时候也记得把自己项目的日志打开,在
输入自己的包名,然后就可以查看到报错信息了,之后我就发现是我的环信出了问题//初始化
EMClient.getInstance().init(this, options);
然后就在网上寻找答案,最后是发现还需要加一行混淆代码:
-keep class com.superrtc.** {*;}
完整如下:
###-----------------环信-------------------#######
-dontwarn com.easemob.**
-keep class com.easemob.** {*;}
-keep class org.xmlpull.** {*;}
-keep class com.squareup.picasso.* {*;}
-keep class com.hyphenate.* {*;}
-keep class com.hyphenate.chat.** {*;}
-keep class org.jivesoftware.** {*;}
-keep class org.apache.** {*;}
#如果使用easeui库,需要这么写
-keep class com.hyphenate.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.** {*;}
-keep class com.easemob.** {*;}
#环信3.0
-keep class com.hyphenate.** {*;}
-dontwarn com.hyphenate.**
-keep class com.superrtc.** {*;}
问题解决~~
下面附上一些常见的第三方开源项目的混淆
# OkHttp3
-dontwarn okhttp3.logging.**
-keep class okhttp3.