写在前面
因为在工作项目中用到Bugly,所以我在自己的测试工程中尝试接入Bugly,却没有成功,明明一切是按照说明书操作,为什么会不成功?当时在网上找了很久的资料,最后试成功了,这里把当时遇到的问题和解决办法记录下来。
踩坑记录
环境
- Unity 2017.4.39f1
- Bugly 1.5.3(Unity插件版)
记录
我在官网上看到Unity插件版的Bugly更新时间停留在了2017年,而Android版的更新时间则是最近,马上感觉有点不妙。果然在测试项目上接入完毕、出apk、运行后,没有看到错误上报。明明一切是按照说明书操作,为什么会不成功?以下是我的种种尝试:
【尝试1】
我刚开始认为可能是网络原因,可能再等半小时就能看到错误上报了:结果不是,我等了超过半小时甚至一天都没看到错误上报。
【尝试2】
我在官网的“Unity Plugin 常见问题”下看到可能是Application.RegisterLogCallback(...)被注册了的情况,当时测试项目中还装有UnityLogsViewer(方便手机上看Unity日志的插件),UnityLogsViewer已经注册了Application.RegisterLogCallback(...):结果不是,根本没有用到UnityLogsViewer,所以Application.RegisterLogCallback(...)肯定没有被注册。
【尝试3】
可能是Bugly的版本问题,因为项目工程用的是1.4.3版本能正常上报错误:结果不是,我在测试项目上将Bugly换成1.4.3版本后依然没看到错误上报。
【尝试4】
测试项目自身有问题:我的测试项目非常简单,新建的工程,只有为了测Bugly的场景和对应代码。虽然没看出我的测试项目问题出在哪,我就用Bugly带的示例工程出apk看能否正常错误上报,结果也不能。
【尝试5】
以上的尝试都没成功,那可能就是sdk的问题,可能是Bugly的sdk有问题,可能是安卓的sdk有问题:在查找资料的工程中,我看到有博客提到了G站已经有人写了工具BuglyEasyToUnity,可以直接用。不过因为我的Unity是2017版的,而BuglyEasyToUnity的示例用的Unity是2019版,所以我不确定是否要用这个工具。而且我此时更想知道到底是哪里出了问题,所以暂时将它作为参考,对比Bugly官网说明,看看工具作者到底是做了什么不一样的事情。因为我只看安卓,工具作者 做了两件Bugly官网说明没提到的事情:①在UnityPlayerActivity.java里初始化CrashReport;②开启明文流量的网络请求。
我后知后觉想到为什么我没用logcat看安卓的日志……接下来是有了安卓日志下的尝试。
如果没有在UnityPlayerActivity.java里初始化CrashReport,安卓的日志上都不会出现Bugly这个单词。加了以后,能在安卓日志中看到Bugly相关信息,但还不能正常上报错误。此时安卓日志中有条异常(如下图),这条异常就是指说明文流量的网络请求没开启。我开启后,能正常上报错误。
这里,因为能看到Bugly正常上报错误,所以我的尝试就告一段落了,但我的同事在他的测试项目上接入Bugly时还遇到了sdk的其他问题,他的Unity是2019版本的。BuglyEasyToUnity很可能已经解决了这些麻烦,因为我看到作者提到了更新sdk。
总之,还是使用现成工具BuglyEasyToUnity避开麻烦吧。