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),输入以下指令:

shell 复制代码
./adb logcat -s Unity

这条指令的意思是:启动 Logcat 日志抓取工具,并使用 -s Unity 参数静默其他标签,只过滤并显示带有 "Unity" 标签的输出信息。

** 重点提示:** ADB 工具是独立于 Unity 编辑器运行的。也就是说,你完全不需要打开 Unity Editor,只要手机上的 Unity 程序处于运行状态,即可实时抓取日志信息。

2. 清除历史缓存日志

需要注意的是,logcat 默认会输出设备上缓存的历史日志信息。如果不想被旧日志干扰,可以在开始抓取前,先执行以下指令清除历史缓存:

shell 复制代码
.\adb logcat -c

3. 精准过滤关键信息

在实际开发中,系统输出的信息往往非常庞杂。为了提高排查效率,我们可以使用 -e 参数配合正则表达式来进行关键字过滤。例如,我们只想看某个特定模块的日志,可以使用如下指令:

shell 复制代码
./adb logcat -e "ARModePanelSwitcher"

为了完美配合这种过滤方式,我们在 Unity 编辑器端编写 C# 脚本时,可以刻意将关键信息格式化输出,例如:

csharp 复制代码
Debug.Log("[ARModePanelSwitcher] ClearDetectedPlanes done");

这样在终端执行过滤命令时,就能像大海捞针一样,精准且快速地捕获到我们关心的关键业务逻辑了。

4. 将日志保存到本地文件

如果程序运行时间较长,或者我们需要将崩溃前的完整日志发给同事协助分析,终端一直滚动并不方便。此时可以使用 -f 参数将日志直接输出到指定文件中:

shell 复制代码
./adb logcat -s Unity -f D:/unity_log.txt

这样不仅方便后续用文本编辑器慢慢查阅,还能避免终端内存溢出导致的日志截断问题。

以上这套基于命令行的调试方案虽然看起来比较原始,没有图形化界面那么直观,但在很多场景下已经勉强够用,且极其轻量便捷,非常适合日常快速排查问题。

相关推荐
法欧特斯卡雷特1 小时前
从 Kotlin 编译器 API 的变化开始: 2.4.0
android·开源·github
贾艺驰1 小时前
实战Android Framework: 新增一个系统服务
android·源码
火山上的企鹅1 小时前
Codex实战:APP远程升级服务搭建(五)App端远程升级接入
android·服务器·远程升级·qgc
BreezeDove2 小时前
【Android】Flutter3.35项目启动超时问题
android·flutter
故渊at2 小时前
第十四板块:Android 硬件抽象与安全加固 | 第三十四篇:Hardware Composer (HWC) 与 显示安全(HDCP)
android·安全·composer·安全加固·hwc·硬件抽象
KIO no way2 小时前
AI内容编排是什么_聊聊CSDN_AI数字营销背后的分发逻辑
android·人工智能
故渊at2 小时前
第十四板块:Android 硬件抽象与安全加固 | 第三十三篇:Verified Boot 与 硬件信任链(Trusty TEE)
android·安全·信任链·verified
Tangyuewei2 小时前
我用 AI 辅助开发了一个发型 App,然后打包成了 APK
android·人工智能·ai编程
程序课代表3 小时前
Android源码分析挖掘(二) fork大师zygote进程
android·zygote