团结引擎 OpenHarmony 平台全面支持 UAAL,实现引擎能力嵌入原生应用

团结引擎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 包形式导出

  1. 团结引擎渲染的页面(Page)组件化: 页面组件化之后,极大地提高了开发者使用团结引擎渲染能力的自由度。理论上可以将团结引擎嵌入到原生 App 的任意位置。

  2. 调用机制:团结引擎作为以"har"模块(模块名为"tuanjieLib")嵌入到工程之后,其它模块如果要访问团结引擎内的接口和资源,需要通过"tuanjieLib"作为入口进行访问。

  3. 团结工程输出成一个 module:

  4. 首先需要修改团结工程的 hvigorfile.ts,将输出改成'har'包的形式(非 UAAL 模式下,默认是输出 'hap' 包)。

  5. 接着还需要对应修改模块配置文件,使其符合"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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16693.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己部署DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 自己…

DeepSeek渣机部署编程用的模型,边缘设备部署模型

DeepSeek渣机部署编程用的模型,边缘设备部署模型 文章目录 DeepSeek渣机部署编程用的模型,边缘设备部署模型前言一、python代码二、构建一个简单的前端来接入接口2.读入数据 总结 前言 也许大家伙都想完成一些部署DeepSeek的东西,不过部署并…

VS2019打开《喜缺全书算法册》附带代码的方法兼述单元测试

下载地址(大量的题目和测试用例) 下载:地址一,几乎实时更新 GitCode下载。 下载地址二,不定期更新csdn打包下载 如果这两个链接打不开,可能是这两个资源处于审核状态,快则几分钟,慢则2天。 可以加本文末的&#xff31…

急停信号的含义

前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发C#的运动控制程序的时候,一个必要的步骤就是确认设备按钮的急停…

小白学网络安全难吗?需要具备哪些条件?

作为一名零基础小白,想要转行IT学习一门新技术,且上手难度低、就业前景好、薪资待遇高、入行门槛低,网络安全是最值得的选择,掌握它之后你可以获得一份收入不错的工作。那么零基础学网络安全好学吗?以下是具体内容介绍。 首先&am…

IEEE期刊Word导出PDF注意事项

在系统上提交论文时候一般要求PDF文档,但是word直接转PDF可能存在一些问题: 部分图片不清晰。字体未嵌入PDF。间距发生了变化。字体发生了变化。一张图片显示不完全。 下面介绍word转PDF最稳妥的技巧以及如何实现全部字体的嵌入。 1. 操作流程 ① 另…

CEF132 编译指南 MacOS 篇 - depot_tools 安装与配置 (四)

1. 引言 在 CEF132(Chromium Embedded Framework)的编译过程中,depot_tools 扮演着举足轻重的角色。这套由 Chromium 项目精心打造的脚本和工具集,专门用于获取、管理和更新 Chromium 及其相关项目(包括 CEF&#xff…

【C++高并发服务器WebServer】-16:UDP简单实现

本文目录 一、UDP通信流程二、UDP API2.1 sendto()2.2 recvfrom() 一、UDP通信流程 UDP通信的流程比较简单&#xff0c;下面这张图可以总结。 二、UDP API 2.1 sendto() UDP相关头文件如下。 #include <sys/types.h> #include <sys/socket.h>ssize_t sendto(…

k8s管理工具之lens

什么是lens Lens 是当前市场上最强大的K8S IDE。它是一个独立的单机应用&#xff0c;可以同时运行在macOS、Windows和Linux上。 作为K8S IDE&#xff0c;该有的它基本都有了&#xff01; 集群管理 导入已有集群 首先&#xff0c;你需要在 Lens 中添加你的 Kubernetes 集群。点…

SynthDetoxM - 现代LLM是少样本的并行去毒化数据标注器

SynthDetoxM: Modern LLMs are Few-Shot Parallel Detoxification Data Annotators https://arxiv.org/html/2502.06394v1 1. 主要内容 这篇论文提出了一个 用于生成多语言平行去毒化数据的管道&#xff0c;并介绍了SynthDetoxM&#xff0c;一个包含16,000个高质量去毒化句子对…

云服务器流量包用尽(中病毒)

1. 情况 腾讯云提示我账号欠费了&#xff0c;服务器存在恶意文件。。。 一看&#xff0c;流量包用尽超额了&#xff0c;CPU直接爆了。 用iftop监测一下网络流量。可以看到向多个IP发送了大量的流量。 看来是中病毒了&#xff0c;被当成 “肉鸡”&#xff0c;纳入“僵尸网络”…

RK3588视觉控制器与AI 算法:开启工业视觉检测新境界

在实际应用中&#xff0c;工业相机拍摄产品的图像&#xff0c;RK3588 迅速接收并进行预处理。AI 算法随即对图像进行深入分析&#xff0c;提取特征并与预设的标准进行对比&#xff0c;从而准确判断是否存在缺陷。 例如&#xff0c;在电子元件生产线上&#xff0c;RK3588 和 AI…

android的ViewModel这个类就是业务逻辑层吗

android的ViewModel这个类就是业务逻辑层吗&#xff1f; 相似&#xff1a;业务逻辑代码应该放在ViewModel这个类吗&#xff1f; 嗯&#xff0c;我现在在学习Android架构组件&#xff0c;特别是ViewModel。用户问ViewModel是否就是业务逻辑层&#xff0c;我需要仔细思考这个问题…

Gui-Guider1.8.1 数字时钟控件找不到定义,无法编译

我们在Gui-Guider中使用的一些控件&#xff0c;生成后会发现在LVGL源码中找不到该控件的定义&#xff0c;这时因为Gui-Guider中的一些控件是其自己编写的而不是LVGL提供的&#xff0c;那么我们该如何应用呢&#xff1f;这里拿Digital Clock数字时钟控件举例&#xff1a; 这里我…

使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)安装适配 Java 8 的 Maven

好的&#xff0c;这是使用 SDKMAN! 安装适配 Java 8 的 Maven 的步骤&#xff1a; 前提条件: 安装 SDKMAN!: 如果你的系统上没有安装 SDKMAN!&#xff0c;请按照以下说明进行安装: curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-i…

【Stable Diffusion模型测试】测试ControlNet,没有线稿图?

相信很多小伙伴跟我一样&#xff0c;在测试Stable Diffusion的Lora模型时&#xff0c;ControlNet没有可输入的线稿图&#xff0c;大家的第一反应就是百度搜&#xff0c;但是能从互联网上搜到的高质量线稿图&#xff0c;要么收费&#xff0c;要么质量很差。 现在都什么年代了&a…

oracle表分区--范围分区

文章目录 oracle表分区分区的原因分区的优势oracle表分区的作用oracle表分区类型一、范围分区二、 创建分区表和使用&#xff1a;1、按照数值范围划分2、按照时间范围3、MAXVALUE2. 向现有表添加新的分区3、 分区维护和重新组织&#xff08;合并/删除&#xff09; oracle表分区…

InspurServer服务器监控指标详解

在现代信息化环境中&#xff0c;服务器的稳定运行对于业务连续性至关重要。InspurServer作为高性能服务器解决方案&#xff0c;其性能监控与优化更是不可或缺。本文将基于监控易一体化运维软件&#xff0c;深入探讨InspurServer服务器的关键监控指标&#xff0c;包括响应时间、…

基于opencv的 24色卡IQA评测算法源码-可完全替代Imatest

1.概要 利用24色卡可以很快的分析到曝光误差&#xff0c;白平衡误差&#xff0c;噪声&#xff0c;色差&#xff0c;饱和度&#xff0c;gamma值。IQA或tuning工程一般用Imatest来手动计算&#xff0c;不便于产测部署&#xff0c;现利用opencv实现了imatest的全部功能&#xff0c…

Django开发入门 – 4.创建Django app

Django开发入门 – 4.创建Django app Create A Django App Under An Existing Project By JacksonML 1. 什么是Django app? Django项目面向Web应用程序&#xff0c;它会由一个或多个子模块组成&#xff0c;这些子模块称为apps。 Django apps负责执行完整Web应用程序中涉及…