使用团结引擎创世版导出OpenHarmony应用

发布时间:2024年01月20日

????????团结引擎创世版是Unity中国官方专为中国开发者定制的实时3D引擎,基于 Unity 2022LTS。其开发界面和Unity基本一致,只是在平台方面多了一些针对中国国内平台的设置,比如微信小游戏以及开源鸿蒙(OpenHarmony)。

????????这里我们就来体验一下,用团结引擎导出开源鸿蒙应用,看看它是否真的好用。

一、前言

? ? ? ? 本项目旨在学习了解使用团结引擎导出OpenHarmony应用,了解使用团结引擎团出OpenHarmony应用的构建过程,帮助初学者快速的导出OpenHarmony应用。

? ? ? ? 团结引擎的安装可参考《团结引擎的安装》, 安装时记得勾选 OpenHarmony 模块。

二、开发环境

????????操作系统:Windows

????????Unity 版本:团结引擎1.0.1

????????团结引擎的安装参考《团结引擎的安装》

三、 导入资源

? ? ? ? 因为我们主要是了解开源鸿蒙(OpenHarmony)应用的构建过程,因此我们使用已经可以运行的项目资源来作为案例,不涉及开发过程。

?????????团结引擎导入资源方式和Unity完全一样,对Unity导出的资源也完全兼容。先创建一个空的Tuanjie 工程。下载本文附带的资源,点击【Assets】->【Import Package】->【Custom Package...】,选择下载好的资源,点右下角【Import】,将资源导入到项目。

? ? ? ? 确保项目已经处于OpenHarmony平台下。切换方法,?在Build Settings界面,选中OpenHarmony平台选项,点击右下switch按钮,即可切换平台至OpenHarmony平台。?

四、环境设置

????OpenHarmony应用的构建依赖于以下三个模块:

  • OpenHarmony 构建支持
  • OpenHarmony SDK 和 Node.js SDK 工具
  • OpenJDK

?????????在团结编辑器中,选择顶部菜单栏Edit ->?Preferences...,在打开的窗口左侧导航栏中,选择External Tools。外部工具面板的 OpenHarmony 部分包含SDKNode.jsJDK的条目。

?????????要自定义任何这些依赖项的安装,请禁用依赖项各自的复选框,然后单击Browse并选择自定义依赖项的安装文件夹。

? ? ? ? 对于OpenHarmony配置,在安装OpenHarmony 模块的时候并没有像Android一样,将sdk、ndk等模块一起下载下来,这需要自己安装,并配置安装路径。

OpenHarmony SDK 下载:https://docs.openharmony.cn/pages/v3.2/zh-cn/release-notes/OpenHarmony-v3.2-release.md/#%E9%85%8D%E5%A5%97%E5%85%B3%E7%B3%BB

NodeJS 下载:https://nodejs.org/en/about/previous-releases

OpenJDK 下载:https://openjdk.org/

注意:

????????Unity支持OpenHarmony 3.2 (API level 9) 及以上版本。

小技巧:

????????单独去下载OpenHarmoney SDK比较麻烦,可以通过华为DevEco Studio IDE的SDK 管理工具来进行下载和版本管理。DevEco Studo 下载和安装可参考官网文档

?五、导出OpenHarmony应用

????????团结引擎在所有 OpenHarmony 构建中都使用 Hvigor。您可以在团结中构建输出包(.hap),也可以从团结中导出项目,然后使用外部工具(例如DevEco Studio)进行构建。

? ? ? ? 关于OpenHarmony应用的构建过程,官方文档是这样描述的:

构建 OpenHarmony 应用程序:

  1. 团结从您的团结项目中收集项目资源、代码库、插件、Hvigor模板和模块模板,并使用它们创建有效的Hvigor项目。
  2. Tuanjie 根据 Tuanjie 项目的 Player Settings 和 Build Settings 添加和更新 Hvigor 模板和模块文件中的值。
  3. 如果您选择导出项目而不是构建它,并使用 IL2CPP脚本后端,Tuanjie 会将 C# 脚本生成的 C++ 源文件放入 Hvigor 项目中。否则,如果您选择构建项目,团结会将libil2cpp.so库放入 Hvigor 项目中。
  4. 团结对所有IPostGenerateOpenHarmonyProject接口调用OnPostGenerateOpenHarmonyProject。您可以在 Hvigor 构建应用程序之前使用此回调来修改或移动文件。
  5. Tuanjie 运行 Hvigor 以从 Hvigor 项目构建应用程序。Hvigor 将团结库模块、团结启动器模块和插件模块合并到一个OpenHarmony 应用模块文件中。

? ? ? ? 我们可以直接导出hap安装包。依次点击 【File】->【Build Settings...】,打开构建界面,设置Texture Compression 格式为ETC2。然后点击右下【Build】按钮,选择要保存 hap的位置,开始构建。

? ? ? ? ?构建完成后会生成后缀名为 hap的文件,这个文件就是鸿蒙原生应用。

六、关于OpenHarmony相关问题的记录?

????????6.1? 问:我安装了团结引擎后,在external tools中发现,我的鸿蒙相关的sdk都没有, 版本是团结1.0.1 平台是open harmony。

? ? ? ? 答:OpenHarmony Build Support 中不包含OpenHarmony SDK以及Node.js SDK, JDK,需要自行安装。 当前版本对这些SDK的安装路径查找逻辑还有问题,请手动指定一下。后续版本会修复。

? ? ? ? ?6.2? 问:团结引擎1.0.1,vs2022 17.8.4版本, 在vs中点击附加到unity,弹出选择Unity实例,但窗口为空。通过 调试-附加到进程, 选择 Tuanjie.exe 也无法断点。

? ? ? ? 答:目前团结引擎不能和VisualStudio中的Unity Debugger插件配对使用, 团结引擎专用的 Debugger插件正在开发中,请关注后续版本。

?????????6.3 问:团结引擎输出鸿蒙.hap文件时,打包报错

CommandInvokationFailure: Unable to sync. E:\test\TuanJieProj\HarmonyTest\OpenHarmonyTest/Temp/StagingArea\OpenHarmonyAppTemplate/hvigorw.bat --sync -p product=default --no-daemon

? ? ? ? 答:NodeJs 的版本太高了,换个低一点的版本就可以了,至于闪退还没解决

?????????6.4 问:使用团结引擎1.0.0打开URP Package Samples中的ProxyLighting场景,并打包, export project后使用DevEco Studio 3.1.1 Release打开项目,在模拟中运行闪退。

? ? ? ? 答:OpenHarmony应该目前还不支持模拟器。?

七、结束语

? ? ? ? 团结引擎导出OpenHarmony应用和导出Android应用基本一致,只是在环境配置的时候需要我们自己动手配置环境,不然Android内置了环境,可能还不完善,以后应该会补齐。此外,在导出hap或者工程项目的时候会遇到或多或少的问题,可以根据实际情况解决,或者去Tuanjie引擎开发者社区提问或反馈。

文章来源:https://blog.csdn.net/youmangu/article/details/135338570
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。