Unity在安卓端如何调试输出信息
Unity 程序构建到安卓端时,需要下载额外的安卓后端程序(可以通过 Unity Hub 进行安装)。这个安卓后端程序中包含了安卓 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 -c
3. 精准过滤关键信息
在实际开发中,系统输出的信息往往非常庞杂。为了提高排查效率,我们可以使用 -e 参数配合正则表达式来进行关键字过滤。例如,我们只想看某个特定模块的日志,可以使用如下指令:
./adb logcat -e "ARModePanelSwitcher"
为了完美配合这种过滤方式,我们在 Unity 编辑器端编写 C# 脚本时,可以刻意将关键信息格式化输出,例如:
Debug.Log("[ARModePanelSwitcher] ClearDetectedPlanes done");
这样在终端执行过滤命令时,就能像大海捞针一样,精准且快速地捕获到我们关心的关键业务逻辑了。
4. 将日志保存到本地文件
如果程序运行时间较长,或者我们需要将崩溃前的完整日志发给同事协助分析,终端一直滚动并不方便。此时可以使用 -f 参数将日志直接输出到指定文件中:
./adb logcat -s Unity -f D:/unity_log.txt
这样不仅方便后续用文本编辑器慢慢查阅,还能避免终端内存溢出导致的日志截断问题。
以上这套基于命令行的调试方案虽然看起来比较原始,没有图形化界面那么直观,但在很多场景下已经勉强够用,且极其轻量便捷,非常适合日常快速排查问题。

浙公网安备 33010602011771号