上一篇提到极光升级,这篇正好是关于极光引起的启动异常
清一色oppo的5.1系统报错,高版本基本没有问题,而原因就是进程阻塞,什么原因我们往下看
调试的时候发现有一个pushcore进程,那这个是什么呢,这个就是极光配置推荐的,但是对于低版本手机就是魔鬼了
<!-- Since JCore2.0.0 Required SDK核心功能-->
<!-- 可配置android:process参数将Service放在其他进程中;android:enabled属性不能是false -->
<!-- 这个是自定义Service,要继承极光JCommonService,可以在更多手机平台上使得推送通道保持的更稳定 -->
<service android:name=".receiver.PushService"
android:enabled="true"
android:exported="false"
android:process=":pushcore">
<intent-filter>
<action android:name="cn.jiguang.user.service.action" />
</intent-filter>
</service>
配置中的android:process=":pushcore"的属性,会导致在启动app的时候同步启动一个新的进程,导致部分性能差的手机anr,启动失败。因此,建议把此属性去掉,去掉了也不影响收到推送,推测此进程使用保活推送服务,提高到达率
我这边再补充一下,首先极光确实会引起anr导致启动异常,上述的问题也是极光最新的架包会引起的,因为之前老版本极光就有说明,类似问题建议升级极光sdk,只不过现在很多人编译版本改成28之后,类似问题触发更加频繁。但是anr问题的原因肯定有很多,我这边再说一个比较奇葩的问题,那就是打包,发布引起的:
图中就是对发布版本的apk进行解析是发现莫名多了一个libtrustdidplugin.so,检查历史代码,发现从来没有增加过这个so文件,怀疑是自动生成的,而且同样的代码重新打包之后,发现又没了,且apk启动正常。讽刺的是他的名字还是什么trust,我信任你了,结果你却给我搞事情。。。因此开发打包的时候都要注意了,假如你新版本没有加太多东西,却发现apk比之前大了很多,当然小了也不正常,这些情况都要排除后,重新打包试试。