寫在前面
因為在工作項目中用到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避開麻煩吧。