最近处理了android应用线上的一个bug,就是下面这样
看图
刚看到时,是一头雾水啊,心想,google怎么会出现问题呢,bug还挺高。一顿调试无过,好吧太菜。最后看到线上另一个app却没有这个bug,一个都没有。从反馈的机型上看,两个app也差不多。对比了两个app
发现
没有bug的这个应用是个新app,没有接入Admob广告,其它代码都差不多,除了换个皮(=-=)。但是也不好确定是它的问题,干脆都加个try catch吧,把admob相关都try catch。可以不要收入,但不能崩溃啊,用户第一
try {
MobileAds.initialize(this, "ca-app-pub-4227955678326630~66666666");
} catch (Exception e) {
e.printStackTrace();
}
测试
就这样把Admob三方地方全部捕获异常,从新打包上线google play,线上没有再报此类错误了
分析
其实很多三方库或多或少都有些bug,作者们自己也在不断发现修正
我们在引用这些库时,大部分也都会加上try catch去处理未知的错误
这些Exception的来源多是android碎片化有关
其实还是没有解决问题本质啊,线上的问题总有莫名其妙,用户的场景甚难复现