团结引擎1.4版本已于近日正式发布!在这一版本中,OpenHarmony 平台迎来了一个具有里程碑意义的更新:全面支持 Used as a Library(UAAL)。UAAL 这一技术方案,具有将引擎嵌入原生应用的独特能力,其便捷性和高度可复用性特别适用于移动平台。该方案不仅展现了引擎的跨平台优势,也得到了开发者的广泛认可和热烈响应。
随着 OpenHarmony 平台开发者的逐步壮大,越来越多关于如何更灵活地在 OpenHarmony 原生应用中使用团结引擎的呼声逐渐出现,例如,关于“OpenHarmony 导出工程能否改造多 HAP 以 feature 方式运行”这一问题,得到了大家的关注和讨论。为此,我们将 UAAL 技术方案成功扩展至 OpenHarmony,进一步提升了 OpenHarmony 平台的可操作性与灵活性。
什么是UAAL?
Used as a Library(UAAL)是一项允许将引擎功能集成到现有的原生应用程序(如 Android、iOS、OpenHarmony 应用)中的技术。当将引擎作为一个库来使用时,就可以把引擎的一些核心功能,如渲染、物理模拟、资源管理等模块提取出来,嵌入到其他移动平台原生的项目架构中。
UAAL的主要特点有:
1. 嵌入运行:Tuanjie 作为一个模块运行,而不是完整的应用,利用 Tuanjie 的强大图形引擎、物理引擎、动画系统和插件生态。原生应用可以在需要时调用 Tuanjie 引擎。
2. 灵活的界面集成:Tuanjie 场景可以作为应用界面的一部分,与原生界面无缝切换。
3. 灵活的工作流:开发者可以继续使用 Tuanjie 编辑器创建和调试 3D 内容,并将其集成到原生应用中。
4. 跨团队协作:Tuanjie 开发团队可以专注于 Tuanjie 内容开发,原生开发团队处理整体应用架构。
如何在 OpenHarmony 原生应用中使用 UAAL?
下载安装团结引擎(1.4.0 及以上版本),打开项目后。通过顶部菜单栏:File >> Build Settings 打开 Build Settings 面板,在面板左侧将平台切换至 OpenHarmony。
在 OpenHarmony 平台的导出功能中,新增了一个“Export Project”勾选框,勾选后,会自动提供“Export Project Type” 供用户选择:
-
选择:Default,为此前提供的默认导出 DevEco 工程方式。
-
选择:Use As A Library(Recommended),即为 UAAL 模式导出。
导出工程可以直接使用 DevEco 打开并基于此进一步开发,也可以选择将导出工程中的 tuanjieLib 模块集成进已有的 OpenHarmony 项目工程中进行下一步开发。
注:为保证当前版本导出流程和原有默认流程的一致性,“Export Project Type” 选项为过渡方案,未来版本中,UAAL 将作为默认导出方式提供,原有导出方式即将下线!
OpenHarmony UAAL 导出和默认导出有什么区别?
勾选 Use As A Library(Recommended) 并导出后,无需额外操作,即为 OpenHarmony UAAL 模式。导出项目的工程结构目录相较之前自动变化:
-
工程项目中,entry 模块只有简单入口
-
新增 tuanjieLib 模块,引擎相关的代码资源均位于该模块
OpenHarmony UAAL 示例
UAAL 提供一键式打包服务,开发者在 Tuanjie Editor 中完成场景内相关开发并一键导出后,可直接在导出工程的基础上开发,也可以将导出工程中的 tuanjieLib 模块集成进已有的 OpenHarmony 项目工程中。UAAL 开发全流程可参考以下视频:
OpenHarmony UAAL 的实现原理
OpenHarmony 的 Hvigor 工程组织的形式是以模块(module)为单位进行管理的,一个功能内可以包含一个或多个模块,默认包含一个"entry"模块,构建后得到一个可安装 app(后缀是 .hap)。
在非 UAAL 模式下,团结项目是作为"entry"模块整体导出成一个 Hvigor 工程进行构建。为了让团结能够作为一个单独的库(Library)方便地嵌入到原生应用中,团结引擎将以一个"har"模块的形式嵌入到工程中。
TuanjiePlayer 以 har 包形式导出
-
团结引擎渲染的页面(Page)组件化: 页面组件化之后,极大地提高了开发者使用团结引擎渲染能力的自由度。理论上可以将团结引擎嵌入到原生 App 的任意位置。
-
调用机制:团结引擎作为以"har"模块(模块名为"tuanjieLib")嵌入到工程之后,其它模块如果要访问团结引擎内的接口和资源,需要通过"tuanjieLib"作为入口进行访问。
-
团结工程输出成一个 module:
-
首先需要修改团结工程的 hvigorfile.ts,将输出改成'har'包的形式(非 UAAL 模式下,默认是输出 'hap' 包)。
-
接着还需要对应修改模块配置文件,使其符合"har"模块的配置。
以上就是团结引擎 1.4 版本中 OpenHarmony 平台的更新。团结引擎将倾听国内开发者的声音,为大家带来更多大家想要的功能,并且始终保持引擎的高性能、高画质,以及稳定性。非常期待得到你的反馈,与我们一起共建中国版的实时 3D 引擎。
[1] 团结引擎官网:
https://unity.cn/tuanjie/tuanjieyinqing
[2] 团结引擎问答专区:
https://developer.unity.cn/plate/tuanjie-engine?tab=ask
[3] 团结引擎用户手册:
https://docs.unity.cn/cn/tuanjiemanual/Manual/UnityManual.html