内容提要
本文介绍将Unity项目迁移至OpenHarmony(鸿蒙)架构的步骤,涵盖环境准备、代码适配和工程结构。需安装团结引擎和DevEco Studio,切换平台并处理报错,使用UNITY_OPENHARMONY宏适配代码。OpenHarmony工程结构与Android Studio类似,但IL2CPP构建由DevEco自动完成。配置包名、应用名和图标时,需修改entry模块下的文件,推荐使用自适应图标。
延伸解读
宏适配与平台切换
迁移时需注意平台宏的切换。团结引擎为OpenHarmony提供了专门的宏定义UNITY_OPENHARMONY,旧项目中的Android或iOS逻辑需通过条件编译进行适配。同时,若项目使用URP,需删除原插件并重新下载团结引擎的独立URP版本,否则可能引发兼容性问题。模拟器测试时还需勾选x86_64平台。
工程结构对比与构建差异
OpenHarmony工程结构与Android Studio类似,但存在关键差异:IL2CPP构建由DevEco Studio自动完成,导出时代码存储在Il2CppBackup目录,因此不同项目导出路径需分开,避免同步构建冲突。此外,hvigor和oh_modules等目录类似Gradle缓存,一般无需提交版本控制。
应用配置的修改位置
配置包名、应用名和图标时需注意:AppScope/app.json5中仅包名生效,应用名和图标需在entry模块下修改。应用名需同步修改string.json、zh_CN和en_US三个文件中的EntryAbility_label字段;图标推荐使用自适应图标,配置为layeredIcon,并注意app_splash.png的显示时机,建议使用暗色纯色图片以避免黑屏突兀。
Q&A
将Unity项目迁移到鸿蒙需要安装哪些工具?
需要安装团结引擎(通过团结Hub安装,并勾选OpenHarmony Build Support)和DevEco Studio(鸿蒙原生IDE)。
Unity项目迁移到鸿蒙时,如何处理平台相关的代码?
使用团结引擎提供的UNITY_OPENHARMONY宏来编写鸿蒙平台特有的逻辑,例如:`#if UNITY_OPENHARMONY` ... `#elif UNITY_ANDROID` ... `#endif`。
OpenHarmony工程结构与Android Studio工程结构有哪些相似之处?
两者结构相似,例如:module.json5对应AndroidManifest.xml,resources/base对应res,resources/rawfile对应assets,ets对应java/kotlin,oh-package.json5对应build.gradle等。
团结引擎导出OpenHarmony工程时,IL2CPP构建是如何完成的?
团结引擎导出OpenHarmony工程时,IL2CPP构建是自动进行的。导出时代码存储在导出目录同级的Il2CppBackup目录,由DevEco Studio自动完成IL2CPP构建,之后只需打包即可。
在OpenHarmony工程中,如何正确配置应用名和图标?
应用名和图标需要在entry模块下修改。应用名修改entry/src/main/resources/base/element/string.json、zh_CN和en_US下的string.json中的EntryAbility_label字段;图标修改entry/src/main/resources/base/media目录下的icon.png,推荐改为自适应图标(layeredIcon),使用ic_launcher_foreground.png和ic_launcher_background.png。
在AppScope/app.json5中修改应用名和图标会生效吗?
不会。AppScope/app.json5中只有包名生效,应用名和图标需要到entry模块下修改。
鸿蒙工程中启动窗口图标和启动画面分别是什么?
启动窗口图标是media/start_icon.png,应用运行后首先显示;启动画面是app_splash.png,在start_icon之后、游戏启动之前显示,推荐使用暗色纯色图片。