4.5 真机调试与远程工具:上线前最后一公里

核心结论

模拟器不能替代真机——手指的触感、发热降频、硬件 quirks、系统手势冲突,只有真机知道。UE 提供了从数据线直连调试到远程分析的一整套工具。这一篇把工具串成"调试工具箱",对齐 0301 的预算账本使用。

工具箱总览

工具 平台 用途 上手
Android Logcat(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/debugging-for-android-devices-2f5b) Android 看 native/Java 日志 ★
Xcode 调试(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/debugging-ios-projects-with-xc-5178) iOS 断点、控制台、性能 ★★
Android File Server(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/android-file-server-for-unreal-cda5) Android 远程取文件(日志/截图) ★
移动开发工具集(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/development-tools-for-mobile-a-7d88) 全 UnrealConsole 等一套 ★★

Android:Logcat 与远程文件

Logcat 是 Android 玄学问题的照妖镜:

# 只看 UE 的日志
adb logcat -s UE4 VERBOSE
# 或看全部错误
adb logcat *:E

典型读法: - Signal 11 (SIGSEGV) = native 崩溃,用符号化查(见 0503)。 - java.lang.UnsatisfiedLinkError = so 库没打进去/ABI 错(见 0401)。 - [android] 开头的 UE 日志 = 引擎启动各阶段,卡哪看哪。

Android File Server(AFS) 是 UE 的远程文件工具,手机与电脑同网时,直接在编辑器或命令行从设备拉日志、截图、Save 目录文件——不用每次插数据线。

iOS:Xcode 调试

真机连 Mac → Xcode 打开 UE 生成的工程,跑 Debug/Development:

  • 断点:在原生层断;蓝图层断用 UE 自己的蓝图调试器。
  • 性能:Instruments(GPU/分析内存/动性能)。Instruments 是 iOS 性能分析的王器,比 stat 更靠近硬件。
  • 控制台:直接看 NSLog 与 UE 输出。

远程性能排查:stat 命令走网络

设备装上包后,通过远程会话(Unreal Remote 或命令行)连上运行中的游戏,执行 stat unit / stat gpu 等命令看实时数据——在玩家环境(发热、后台占用)中测性能,比编辑器准十倍。

前提:包必须是 Development 或带-cheats 的构建,Shipping 包关掉了 stat。

常见坑与解法

坑 1:adb 识别不了设备

原因:驱动(Windows 常见)或 USB 调试没开。

解法:手机开发者选项开"USB 调试";Windows 装通用 ADB 驱动;实在不行转WiFi 调试(Android 11+ 原生支持)。

坑 2:设备频繁掉线(无线调试不稳)

解法:固定设备 IP 或做法设备列表;掉线自动重连脚本兜底。

坑 3:iOS 真机 Development 包启动闪退

原因:签名或描述文件问题,不是代码问题。

解法:Xcode 里直接 Run 一次,让它自动签名修复;看崩溃日志头部的 error。

坑 4:崩溃在日志里只有地址没有函数名

原因:符号(dSYM)没匹配。

解法:保留每次构建的 dSYM,符号化见 0503。

我的"三机验收"规程

发布前(里程碑末,见 0305):

设备 任务 通过标准
旗舰机 60 帧验证、高画质 稳定 60,机身温热
中端机(主力机型) 核心流程、发热 稳定 30,玩 30 分钟不降频
低端机 可玩性兜底 不崩、低画质能玩

三机各录一段 15 分钟屏 + 记录帧率曲线,作为版本验收附件归档。

相关节点速查

  • Android 日志:adb logcat(官方指南 https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/debugging-for-android-devices-2f5b)
  • iOS 调试:Xcode + 崩溃日志(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/debugging-ios-projects-with-xc-5178)
  • 远程文件:AFS(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/android-file-server-for-unreal-cda5)
  • 工具集总览:https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/development-tools-for-mobile-a-7d88

心得:调试工具是"平时嫌麻烦、出事嫌少"的东西。我的做法是在工位常备三台测试机 + 一台 Mac mini,加一个"一键拉日志"脚本。当同事报"我这崩了"时,三分钟就能拿到 log——调试的效率决定了发布的节奏。