Unity在安卓端如何调试输出信息
了安卓 SDK,而在 SDK 的platform-tools目录下,我们可以找到一个非常核心的工具——ADB(例如笔者的路径为:D:\Program Files\Unity\Hub\Editor\2022.3.62f3\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools\adb.exe)。
经常折腾安卓机的朋友对 ADB(Android Debug Bridge)应该不陌生,它是安卓系统提供的一个“调试桥”工具。简单来说,它就像是电脑和安卓设备之间的一个万能遥控器,允许我们通过命令行与设备进行通信,比如安装卸载应用、传输文件、查看系统底层日志等。
1. 捕获 Unity 专属日志
确保手机已通过数据线连接电脑,并在手机系统的“开发者选项”中开启了USB调试模式。随后,我们在上述platform-tools目录下启动终端(如 PowerShell),输入以下指令:
./adb logcat -s Unity这条指令的意思是:启动 Logcat 日志抓取工具,并使用-s Unity参数静默其他标签,只过滤并显示带有 "Unity" 标签的输出信息。
** 重点提示:** ADB 工具是独立于 Unity 编辑器运行的。也就是说,你完全不需要打开 Unity Editor,只要手机上的 Unity 程序处于运行状态,即可实时抓取日志信息。
2. 清除历史缓存日志
需要注意的是,logcat默认会输出设备上缓存的历史日志信息。如果不想被旧日志干扰,可以在开始抓取前,先执行以下指令清除历史缓存:
.\adb logcat -c3. 精准过滤关键信息
在实际开发中,系统输出的信息往往非常庞杂。为了提高排查效率,我们可以使用-e参数配合正则表达式来进行关键字过滤。例如,我们只想看某个特定模块的日志,可以使用如下指令:
./adb logcat -e "ARModePanelSwitcher"为了完美配合这种过滤方式,我们在 Unity 编辑器端编写 C# 脚本时,可以刻意将关键信息格式化输出,例如:
Debug.Log("[ARModePanelSwitcher] ClearDetectedPlanes done");这样在终端执行过滤命令时,就能像大海捞针一样,精准且快速地捕获到我们关心的关键业务逻辑了。
4. 将日志保存到本地文件
如果程序运行时间较长,或者我们需要将崩溃前的完整日志发给同事协助分析,终端一直滚动并不方便。此时可以使用-f参数将日志直接输出到指定文件中:
./adb logcat -s Unity -f D:/unity_log.txt