腾讯Bugly的坑以及OS库的放置

项目接腾讯Bugly时遇到的问题

为了方便查看用户使用我们的项目时出现的崩溃从而修复bug,进行版本迭代。我们基本上都会接入第三方上报错误的SDK,比如友盟统计和腾讯Bugly。比较两者列出的错误详细程度,以及对开发者反馈的人性化程度,个人还是喜欢接后者。腾讯Bugly不仅把java崩溃、ANR异常和NDK异常分开统计上报,并且其上报的速度也是杠杠的。虽然腾讯Bugly的开发者文档已经很详细写明开发者用户如何接SDK,但是前不久还是出现了一些小状况。

本人用的SDK包是2.3.6版,当时项目里接了一个外部的积分墙,用到了第三方SO库。根据Bugly NDK集成说明文档所说的:除了Bugly SO库之外,如果还集成了其他第三方SO库,则一定要注意兼容性问题:如果libs架构数与上述架构不一致时,可能会发生“java.lang.UnsatisfiedLinkError”异常!因此按照其要求仔细把bugly的SO库文件接入项目并兼容我的积分墙的SO库,但是尴尬的两个问题就出现了。

  1. 当我把两个第三方的SO库文件都放在src/main/jniLibs目录下时,我启动项目并分别加入了测试崩溃方法CrashReport.testJavaCrash()、CrashReport.testANRCrash()、CrashReport.testNDKCrash()方法,发现并不上报java崩溃和ANR日志,但是上报NDKCrash。

  2. 当我按要求把SO库按照最小子集都放在Libs目录并在build文件加入SO指向代码后启动项目发现找不到我的积分墙的SO文件,并报“java.lang.UnsatisfiedLinkError”异常,并且Bugly后台接收到了我的异常。

是不是很诡异,笑哭了!!!

其实仔细想想根本不需要接NDK,因为项目内SO库是第三方的而不是自己写C生成的,因而如果报错也是其第三方的SDK做得不够完善。但是后来按照文档写的最快捷的接入方式,只接入SDK发现使用用户新增了,但是Crash还是没有上报!不过隐隐感觉就是这个积分墙在作怪。后来试着把Bugly的初始化代码
CrashReport.initCrashReport(getApplicationContext(),"注册时申请的APPID", false); 放在了积分墙代码的后面,但不是在Application的OnCreate()方法内,而是在MainActivity,居然成功上报Crash了。事实表明两个积分墙的jar包冲突了。对于初始化的位置问题其实并没有对项目有太大的影响,只要你能保证在进入MainActivity之前不会出现异常就行!

你可能感兴趣的:(腾讯Bugly的坑以及OS库的放置)