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——调试的效率决定了发布的节奏。
