友盟微博三方登录在AneroidQ上崩溃适配方案

Crash 信息如下图
image.png
三方sdk调用位置
image.png
跟踪系统源码找到抛出异常所在位置
image.png
结论:从AndroidQ后传入SSLSocketFactory不能为null
调试验证后最终得出结论如下

1.Android Q HttpsURLConnectionImpl的setSSLSocketFactory方法做了更改,传入为SSLSocketFactory为null会抛异常
2.友盟在用jar集成方式在HttpsHelper.getSSL获取为null,在connection.setSSLSocketFactory传入了null,对应第1点,结果就是AndroidQ直接崩溃,AndroidQ以下的没有问题;友盟在用gradle集成方式时,HttpsHelper.getSSL获取值不为null,所以onnection.setSSLSocketFactory传入不为null,故没有问题。

继续分析HttpsHelper.getSSL为什么为null,先看下图
image.png
图中可以看出获取sslSocketFactory时需求相应的证书,在用jar包集成方时无法将资源文件打入jar,而gradle集成最终拉下来的包是一个aar,所以gradle集成时证书已经在里面了!
解决方案

解决方案有如下两种:
第一种,把jar集成方式改为gradle集成方式;
第二种,在工程的assets目录下放入相应的证书

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

推荐阅读更多精彩内容