内容提要
本文介绍OpenHarmony游戏调试方法:使用DevEco Studio查看设备文件与HiLog日志,处理平台兼容代码,通过HDC远程连接真机,配置Jenkins构建,并实现Unity日志转发至HarmonyOS原生层,以建立稳定排障链路。
延伸解读
调试重点:真机优先
模拟器适合验证安装、启动和基础流程,但渲染效果、性能、设备能力及第三方 SDK 行为应以真机测试结果为准。平台相关逻辑往往只在运行阶段暴露问题,因此建议尽早切换到真机进行调试,避免依赖模拟器结果。
日志查看技巧
DevEco Studio 的日志面板默认可能停留在 FaultLog,它只显示故障信息,并非完整日志。切换到 HiLog 可查看更全面的运行日志,并可按包名、进程或自定义日志域过滤,减少系统日志干扰,提高排查效率。
构建脚本迁移注意
团结引擎导出 DevEco Studio 工程时,不应使用 Unity 导出 Android/iOS 工程常用的 BuildOptions.AcceptExternalModificationsToPlayer 参数,迁移构建脚本时需移除。同时,Jenkins 任务应使用实际安装的编辑器路径和版本,而非产品版本号,因为两者编号规则不同。
日志桥接的注意事项
将 Unity 日志转发到 HiLog 时,建议在初始化阶段缓存 OpenHarmonyJSClass 实例,避免每条日志重复创建。同时,在对象销毁或应用退出时取消订阅,并防止桥接失败时递归打日志。此外,正式发布前应避免将敏感信息写入日志。
Q&A
如何在DevEco Studio中查看鸿蒙应用的沙箱文件?
在DevEco Studio中,通过View > Tool Windows > Device File Explorer打开设备文件浏览器,然后导航到/data/app/el2/100/base/<你的包名>/haps/entry/files/目录即可查看应用沙箱内的文件。
DevEco Studio的HiLog日志窗口和FaultLog有什么区别?
FaultLog主要用于查看故障信息,并不等同于完整的Logcat;HiLog则提供更完整的运行日志。排查时应切换到HiLog,并按包名、进程或自定义日志域过滤,以减少系统日志干扰。
如何避免重新导出覆盖手动修改的OpenHarmony工程?
保留一份已完成原生适配的工程,每次导出后只同步团结引擎生成的代码和原生库。可以使用批处理脚本同步Managed和libs两个目录,但注意robocopy /MIR会删除目标目录中源目录不存在的文件,因此目标目录应仅用于保存导出产物。
在鸿蒙迁移中,如何处理平台相关代码?
需要全局搜索RuntimePlatform、UNITY_ANDROID等平台宏,以及Application.platform、Application.persistentDataPath等平台相关API,检查原有Android分支是否需要补充OpenHarmony处理逻辑。同时注意Java、JNI、Android Activity或Intent等原生调用。
如何通过HDC远程连接鸿蒙真机进行调试?
首先在设备的设置 > 系统 > 开发者选项中打开无线调试,记录IP和端口。然后在DevEco Studio终端执行hdc tconn <设备IP>:<端口号>,连接成功后用hdc list targets确认设备识别。之后即可在设备列表中选择该设备运行项目。
Jenkins构建时团结引擎版本号与编辑器版本号有何区别?
团结引擎产品版本与编辑器版本采用不同编号规则,例如团结引擎1.9.3对应的编辑器版本可能显示为2022.3.62t11。Jenkins任务应以实际安装的编辑器路径和版本为准,不要直接使用产品版本号拼接路径。
团结引擎导出DevEco Studio工程时,BuildPlayer参数有何特殊要求?
团结引擎导出DevEco Studio工程时不需要指定BuildOptions.AcceptExternalModificationsToPlayer,该参数常用于Unity导出Android Studio或Xcode工程。迁移构建脚本时应从OpenHarmony分支中移除该参数。
如何将Unity日志转发到HarmonyOS的HiLog?
通过订阅Application.logMessageReceived,再通过原生桥接将日志转发到hilog。具体步骤包括:创建LogBridge.ets,注册并导出LogBridge,然后在C#中调用桥接类。注意在初始化阶段缓存OpenHarmonyJSClass,避免重复实例化,并在对象销毁时取消订阅。