Unite Shanghai 2024 团结引擎专场 | 团结引擎 OpenHarmony 工程剖析

在 2024 年 7 月 24 日的 Unite Shanghai 2024 团结引擎专场演讲中,Unity中国 OpenHarmony 技术负责人刘伟贤对团结引擎导出的 OpenHarmony 工程进行了细节剖析,详细讲解 XComponent 如何与引擎结合,UI 线程和引擎线程的关联以及 ts/ets 的代码如何与引擎功能进行交互。帮助大家在接入 SDK 以及 OpenHarmony 系统能力调用方面有更深入的了解。

刘伟贤:大家下午好!今天在这里带来的分享是《团结引擎 OpenHarmony 工程剖析》。我是刘伟贤,目前是 Unity中国 OpenHarmony 平台和车机平台的技术负责人。今天的内容一共四个部分:基本概念介绍、引擎画布-XComponent、引擎线程模型、引擎跨语言交互。

OpenHarmony 是一个全新的操作系统,其次这个系统本身在快速发展过程中,中间胶水层代码也在频繁变化,而且很多开发者对这个胶水层代码很不熟悉。因为原来的 Android 和 iOS 是有一定历史的,但是对于 OpenHarmony 来讲是全新的。所以,今天希望能通过概念和核心部分的讲解,让大家对于胶水层代码有更深入了解,从而看到 OpenHarmony 技术平台的一些技术细节。

基本概念

首先大家打开一个工程,切换到 OpenHarmony 这个平台,当我们在 BuildSettings 里面勾选 Export Project,我们就能得到一个 Ability Project,是 OpenHarmony 平台的一个原生工程,然后使用 Deveco Studio 打开这个 Ability Project,我们就能进行调试、构建等常规的操作。同时,通过 Export Project 也能窥探到所有引擎适配 OpenHarmony 的胶水代码。

首先,我们从一个项目的目录结构来窥探 Ability Project 整体的目录结构是怎么样的。开发态包结构(Stage 模型)分成 AppScope 跟 entry 这两个比较重要的目录,AppScope 是一个应用的全局配置,核心是 app.json5,去配置包名信息、版本号等。Entry 是一个模块,类似于 Android 工程的 module,但是里面会存有资源、ets 代码、ArkTS 代码、模块配置、一些配置项,还有应用级的配置信息、签名信息会在 build-profile.json5。

上面是一般 OpenHarmony Ability Project 开发包结构,但是与引擎相关的目录只有上图这些,比如说引擎所有的 so,包括要接入的 SDK 都会放到 entry/libs 目录中,引擎中所有的胶水代码都在 entry/main/ets 中,而胶水代码中还有一个关键的入口 TuanjiePlayerAbility,相当于安卓的 activity。还有 UIAbility 对应的 page 文件 TuanjiePlayerAbilityIndex.ets。除了这些以外,其他plugins代码也会自动导到这个地方。对于包内的资源,会放在 resources/rawfile/Data 中,包括 StreamingAssets, boot.config 等。这就是引擎在适配的时候,我们怎么样把引擎中的资源放到原生的 Ability Project 里面去。

上面这个图展示了在 OpenHarmony 的工程由开发态视图经过编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值