友盟分享bug整理

最近做项目用到了第三方登录和分享,于是就集成了友盟,具体功能是QQ、微信、新浪微博的登录和分享,测试阶段并没有出现很多的问题,和是混淆打包以后,问题就出来了,搞了两个小时,终于搞定了这些bug。
1:java.lang.RuntimeException Stub!
2:java.lang.ClassCastException com...MainApplication cannot be cast to android.app.Activity

起初有点奇怪为什么会出现ClassCastException,似乎并没有哪个地方用到了MainApplication,后来去研究友盟sdk,发现 UMShareAPI是单例模式,初始化方法是public static UMShareAPI get(Context context);这个方法参数类型是Context, 所以传入的参数可以是Activity, 也可以是Applicaion的Context。
但在SDK内部使用的时候,有的地方做了Context到Activity的强转,如果UMShareAPI初始化方法里传的参数是Applicaion的Context, 就会出问题。这尼玛,传入的一定要是activity你为什么参数是context,就算传入的是activity,这尼玛是严重的内存泄漏啊。。。先不管了,搞定bug再说,初始化的时候传入activity,果真就没问题了;

另一个bug就显得毫无头绪了,只有从混淆入手了,一路追踪,居然发现在引入的环信module中有一个org.apache.http.legacy.jar包,找的好辛苦啊,一想是不是这个包混淆的原因,于是在proguard-rules.pro中加入配置:

-dontwarn android.net.compatibility.**
-dontwarn android.net.http.**
-dontwarn com.android.internal.http.multipart.**
-dontwarn org.apache.commons.**
-dontwarn org.apache.http.**
-keep class android.net.compatibility.**{*;}
-keep class android.net.http.**{*;}
-keep class com.android.internal.http.multipart.**{*;}
-keep class org.apache.commons.**{*;}
-keep class org.apache.http.**{*;}

然后重新打包,果然就没有问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值