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

Crash 信息如下图
友盟微博三方登录在AneroidQ上崩溃适配方案_第1张图片
image.png
三方sdk调用位置
友盟微博三方登录在AneroidQ上崩溃适配方案_第2张图片
image.png
跟踪系统源码找到抛出异常所在位置
友盟微博三方登录在AneroidQ上崩溃适配方案_第3张图片
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,先看下图
友盟微博三方登录在AneroidQ上崩溃适配方案_第4张图片
image.png
图中可以看出获取sslSocketFactory时需求相应的证书,在用jar包集成方时无法将资源文件打入jar,而gradle集成最终拉下来的包是一个aar,所以gradle集成时证书已经在里面了!
解决方案

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

你可能感兴趣的:(友盟微博三方登录在AneroidQ上崩溃适配方案)