一,工具集成
Logcat是開發(fā)者必備的工具,調(diào)試app時(shí)的閃退,異常,等問題都可以在這里看到。
Android Logcat包是在Unity Editor中顯示來自Android設(shè)備的堆棧跟蹤和日志等消息。
1.1 注意事項(xiàng)
Android Logcat軟件包需要Unity 2019.4或更高版本以及Android支持模塊。需要添加Android模塊:


導(dǎo)入前需要注意:確保你的工程已加載Android模塊,并且可以切到Android平臺。
確認(rèn)后在“build Settings”窗口中切換到Android構(gòu)建目標(biāo)。

1.2 導(dǎo)入插件
在Package Manager(Window” --> PackageManager)界面中導(dǎo)入:

插件簡介:
Android Logcat軟件包支持:
Android:日志消息
Android:應(yīng)用程序內(nèi)存統(tǒng)計(jì)
Android:屏幕捕獲
Android:屏幕記錄器
Stacktrace:實(shí)用程序
可以通過“Window > Analysis > Android Logcat ”在Unity Editor中訪問該窗口。

窗口打開快捷鍵:Windows 按“Alt+6”;macOS “Option+6”
二,連接設(shè)備
Android Logcat軟件包支持USB和無線連接。本節(jié)介紹如何將Android設(shè)備連接到Android Logcat窗口。
2.1 使用USB連接
當(dāng)您打開Android Logcat窗口時(shí),Unity會自動將任何USB連接的Android設(shè)備添加到設(shè)備列表中。
手機(jī)連接上USB之后,需要選擇:傳輸文件。若沒有此選項(xiàng),則需要打開開發(fā)者模式。

PS: 在手機(jī)版本上多次點(diǎn)擊才可以喚醒出開發(fā)者模式,再次點(diǎn)擊則有吐司提示您已處于開發(fā)者模式,這時(shí)再去更多設(shè)置中去找開發(fā)者模式并開啟即可。
檢測上之后,即可在窗口中看到實(shí)時(shí)日志了:
image.png
2.2 無線連接
要將Android設(shè)備連接到Android Logcat窗口:
無線連接,還是得先使用2.1方式使用USB鏈接一下,然后打開Android Logcat窗口,從工具欄中,選擇“設(shè)備選擇器”。
選擇其他連接選項(xiàng):

在打開的窗口中,找到對應(yīng)設(shè)備點(diǎn)擊Connect:

連接成功提示:(不使用USB方式鏈接,直接輸入IP地址,總是鏈接失敗,不知道為什么[\疑惑])

連接成功后,拔掉USB連接,就可以在可用設(shè)備窗口,找到Wifi鏈接的了:

PS:一次只能連接到一個設(shè)備。要選擇要連接的設(shè)備,請使用Android Logcat窗口中的設(shè)備列表。此列表包含已連接設(shè)備的設(shè)備ID。
可以看到實(shí)時(shí)日志了:

若需要斷開連接,可以在連接窗口對應(yīng)設(shè)備后點(diǎn)擊“Disconnect”:

再次連接,直接點(diǎn)最下面的Connect鏈接,即可鏈接成功。
三,實(shí)用功能介紹
3.1 通用介紹
1.篩選包名查看日志
點(diǎn)擊No Filter,在彈出的下拉菜單中,即可選擇當(dāng)前運(yùn)行應(yīng)用的包名,進(jìn)行查看當(dāng)前應(yīng)用的相關(guān)日志:

2.篩選日志信息
Logcat工具支持在搜索框輸入正則表達(dá)式檢索和區(qū)分大小寫功能:

3.Reconnect重新連接,Disconnect斷開鏈接
當(dāng)我們出現(xiàn)一個問題,需要查看日志時(shí),為了防止日志太多將需要查看的日志刷過去,則可以點(diǎn)擊Disconnect斷開鏈接,停止捕獲更新日志信息。需要再次查看日志時(shí),點(diǎn)擊Reconnect重新連接。

3.2 堆棧跟蹤工具 – 解析Bugly捕獲報(bào)錯
在Tools下拉菜單下選擇Stacktrace Utility 可以打開工具面板:

準(zhǔn)備工作:指定符號表)
在Project Setting面板 -> Analysis -> Android Logcat Settings 中設(shè)置:

PS:打包時(shí)用的哪個就導(dǎo)入哪個,看你打包時(shí)的工程設(shè)置:Player -> Configuration
image.png
若不指定會在解析時(shí)報(bào)錯提示:
At least one symbol path needs to be specified.
Click Configure Symbol Paths and add the necessary symbol path.
舉個例子:解析Bugly捕獲報(bào)錯
操作步驟:復(fù)制Bugly報(bào)錯到工具Original界面,然后點(diǎn)擊Resolve Stacktraces 即可:
解析前日志:
at libunity.0x577cd8(Native Method)
at libunity.0x583bdc(Native Method)
at libunity.0x5844b8(Native Method)
at libunity.0x583870(Native Method)
at libunity.0x58380c(Native Method)
at libunity.0x1d9058(Native Method)
at libil2cpp.0x2bd4b20(Native Method)
at libil2cpp.0x2bd6008(Native Method)
at libil2cpp.0x278083c(Native Method)
at libil2cpp.0xb8dc68(Native Method)
at libil2cpp.0xb8dac8(Native Method)
at libunity.0x566cf4(Native Method)
at libunity.0x574f98(Native Method)
at libunity.0x581a0c(Native Method)
at libunity.0x5815e8(Native Method)
at libunity.0x583620(Native Method)
at libunity.0x583b44(Native Method)
at libunity.0x5844dc(Native Method)
at libunity.0x583870(Native Method)
at libunity.0x58380c(Native Method)
at libunity.0x1d9058(Native Method)
at libil2cpp.0x2bd4b20(Native Method)
at libil2cpp.0x2bd6008(Native Method)
at libil2cpp.0x278083c(Native Method)
at libil2cpp.0xb8dc68(Native Method)
at libil2cpp.0xb8dac8(Native Method)
at libunity.0x566cf4(Native Method)
at libunity.0x574f98(Native Method)
at libunity.0x581a0c(Native Method)
at libunity.0x5815e8(Native Method)
at libunity.0x583620(Native Method)
at libunity.0x583b44(Native Method)
解析后日志:
at libunity.0x577cd8 (ScriptingInvocation::ScriptingInvocation(ScriptingObjectPtr, ScriptingMethodPtr) at ??:?)(Native Method)
at libunity.0x583bdc (MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingExceptionPtr) at ??:?)(Native Method)
at libunity.0x5844b8 (MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethodPtr, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x583870 (MonoBehaviour::StartCoroutine(char const, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x58380c (MonoBehaviour::StartCoroutineManaged(char const, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x1d9058 (MonoBehaviour_CUSTOM_StartCoroutineManaged(ScriptingBackendNativeObjectPtrOpaque, ScriptingBackendNativeStringPtrOpaque, ScriptingBackendNativeObjectPtrOpaque) at ??:?)(Native Method)
at libil2cpp.0x2bd4b20 (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0x2bd6008 (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0x278083c (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0xb8dc68 (BrotliDecoderVersion at ??:?)(Native Method)
at libil2cpp.0xb8dac8 (BrotliDecoderVersion at ??:?)(Native Method)
at libunity.0x566cf4 (scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr, bool) at ??:?)(Native Method)
at libunity.0x574f98 (ScriptingInvocation::Invoke(ScriptingExceptionPtr, bool) at ??:?)(Native Method)
at libunity.0x581a0c (Coroutine::InvokeMoveNext(ScriptingExceptionPtr) at ??:?)(Native Method)
at libunity.0x5815e8 (Coroutine::Run(bool) at ??:?)(Native Method)
at libunity.0x583620 (MonoBehaviour::TryCreateAndRunCoroutine(ScriptingObjectPtr, ScriptingMethodPtr, Coroutine) at ??:?)(Native Method)
at libunity.0x583b44 (MonoBehaviour::HandleCoroutineReturnValue(ScriptingMethodPtr, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x5844dc (MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethodPtr, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x583870 (MonoBehaviour::StartCoroutine(char const, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x58380c (MonoBehaviour::StartCoroutineManaged(char const, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x1d9058 (MonoBehaviour_CUSTOM_StartCoroutineManaged(ScriptingBackendNativeObjectPtrOpaque, ScriptingBackendNativeStringPtrOpaque, ScriptingBackendNativeObjectPtrOpaque) at ??:?)(Native Method)
at libil2cpp.0x2bd4b20 (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0x2bd6008 (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0x278083c (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0xb8dc68 (BrotliDecoderVersion at ??:?)(Native Method)
at libil2cpp.0xb8dac8 (BrotliDecoderVersion at ??:?)(Native Method)
at libunity.0x566cf4 (scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr, bool) at ??:?)(Native Method)
at libunity.0x574f98 (ScriptingInvocation::Invoke(ScriptingExceptionPtr, bool) at ??:?)(Native Method)
at libunity.0x581a0c (Coroutine::InvokeMoveNext(ScriptingExceptionPtr) at ??:?)(Native Method)
at libunity.0x5815e8 (Coroutine::Run(bool) at ??:?)(Native Method)
at libunity.0x583620 (MonoBehaviour::TryCreateAndRunCoroutine(ScriptingObjectPtr, ScriptingMethodPtr, Coroutine*) at ??:?)(Native Method)
at libunity.0x583b44 (MonoBehaviour::HandleCoroutineReturnValue(ScriptingMethodPtr, ScriptingObjectPtr) at ??:?)(Native Method)

