OpenHarmony开发者论坛

标题: 【技术分享】团结引擎支持OpenHarmony [打印本页]

作者: ditouzoulu    时间: 2023-12-27 22:05
标题: 【技术分享】团结引擎支持OpenHarmony
[md]在2023年12月15日的Unity技术开放日广州站主会场中,Unity 高级技术经理刘伟贤,向大家介绍:

Unity中国团结引擎创世版已全面支持OpenHarmony操作系统,将为OpenHarmony生态带来更多高品质游戏与实时3D内容。本次分享将详解由团结引擎创世版打包至OpenHarmony的完整工作流,并介绍团结引擎在OpenHarmony的能力和技术部署,帮助中国开发者在团结引擎正式上线后快速开发OpenHarmony应用程序。

本文为相关进展内容分享。

**视频链接:[https://www.bilibili.com/video/B ... fadbb842b16dac5ca39]()**

![image.png](https://forums-obs.openharmony.c ... wm31zhufm2224d1.png "image.png")

**团结引擎简介**

![image.png](https://forums-obs.openharmony.c ... lnzglgffish4xnv.png "image.png")

团结引擎是专门为国内开发者开发的引擎,目前已全面适配OpenHarmony的各项能力,未来会更多适配各项国产操作系统以及硬件。

**OpenHarmony适配时间轴**

![image.png](https://forums-obs.openharmony.c ... yrlrflzfl08y080.png "image.png")

2月开始准备与评估;

3月正式开启适配,一个月完成build system、三方库、引擎基础构建的处理;

7月份完成引擎基础能力适配;

8月份实现倩女幽魂实机演示;

9月份构建引擎全能力,SDK升级到4.0版本;

11月份开放客户邀测;

12月份完成收尾,跑通测试用例;

明年一月份随着团结引擎创世版公开发布。

**部分客户适配成果**

![image.png](https://forums-obs.openharmony.c ... bbz1cu51cmjm4m7.png "image.png")

整体性能、画面可对标安卓,兼容性能力强。

**OpenHarmony适配流程**

![image.png](https://forums-obs.openharmony.c ... 9yhhhdhhaia1d5d.png "image.png")

拿到团结引擎,打开大项目切换到OpenHarmony平台,即可丢出来包。

**【Editor工作流-OpenHarmony】**

**Editor工作流**

![image.png](https://forums-obs.openharmony.c ... omg2ih77s90z9yr.png "image.png")

与原有工作流完全一致,兼容老版本项目;

支持导出Deveco Studio原生Ability Project,支持一键出包Hap;

支持连接设备Patch And Run,支持连接设备Build And Run。

**OpenHarmony平台专有的****配置****项**

![image.png](https://forums-obs.openharmony.c ... 4yaeoul1mjcmj2u.png "image.png")

包括player、graphics、quality等相关设置。

**Deveco Studio Ability Project**

![image.png](https://forums-obs.openharmony.c ... a87l58rs1llslsl.png "image.png")

导出原生工程,包括一些库、TS代码、资源等,便于调试。

**OpenHarmony Device Connector**

![image.png](https://forums-obs.openharmony.c ... inxceomralammlr.png "image.png")

可以使用hdc指令调试。

**【引擎能力-OpenHarmony】**

**整体架构**

![image.png](https://forums-obs.openharmony.c ... 922unibuv4vm44h.png "image.png")

整体架构和安卓完全一样,引擎线程与UI线程分离;

和安卓差异点在于,在ts创建worker.ThreadWorker,引擎Loop通过libuv事件驱动;

支持单/多线程渲染;

支持Job System/C# Job System。

**渲染能力**

![image.png](https://forums-obs.openharmony.c ... ruxjhiavudtcdyv.png "image.png")

渲染管线,支持内置渲染管线及URP;

API,支持OpenGLES 3.x、Vulkan(适配完成,测试中);

纹理压缩格式支持与安卓一致,默认使用ETC2,也可以使用ASTC。

**文件系统**

![image.png](https://forums-obs.openharmony.c ... 938fk7wkc0o0f0w.png "image.png")

文件分为包内文件与包外文件,与安卓一样;

Application底下的路径变量都映射OpenHarmony底下的应用沙箱路径。

**音视频能力**

![image.png](https://forums-obs.openharmony.c ... 5lbvvzlb5dfblub.png "image.png")

音频,引擎使用OpenSL ES,第三方Wwise插件或原生Fmod插件需自行重新编译。

视频,支持原生ts接口及硬解码:

ts层提供VideoPlayer组件直接使用原生ts接口播放视频;

native层VideoPlayer通过硬解码获得视频画面用于引擎渲染;

第三方插件需自行重新编译。

**脚本能力**

![image.png](https://forums-obs.openharmony.c ... 0fv00jb79af9av7.png "image.png")

对C#与ts交互做了易用性改造,.tslib导出对象给C#使用,.ts/.ets文件用于作为Plugins代码直接带入原有项目;

C#侧有OpenHarmonyJSClass,用于直接调用Static Function;

C#侧有OpenHarmonyJSObject,用于ts导出对象的表示;

C#侧支持导出后直接调用ts的系统api;

C#侧提供OpenHarmonyJSCallback,用于支持异步接口回调;

C#侧提供OpenHarmonyJSArrayBuffer,用于支持ts的ArrayBuffer。

**Profiler能力**

![image.png](https://forums-obs.openharmony.c ... 2n5x070ymr0w1uw.png "image.png")

内置的Profiler能力和原来一样,真机可用;

接入了OpenHarmony对应的Profiler及抓帧工具SmartPerf,hitrace支持,unity profiler tag直接输出,development下默认生效。

**系统相关**

![image.png](https://forums-obs.openharmony.c ... w8w4jlp60jpbria.png "image.png")

权限获取部分,在C#层封装好了接口,开箱即用;

提供了位置服务、Sensor、陀螺仪、屏幕息屏、Webview支持、OpenUrl等能力。

**【团结引擎适配技术细节】**

**OpenHarmony Staging模型**

![image.png](https://forums-obs.openharmony.c ... qik8sqs8449y4oc.png "image.png")

应用模型为stage模型,UIAbility相当于安卓的Activity,提供了应用的事件回调。

**ArkUI & XComponent**

![image.png](https://forums-obs.openharmony.c ... g9qjsi6jjs69mgh.png "image.png")

ArkUI是方舟开发框架为OpenHarmony应用开发的一个UI开发的基础设施,语法类似Flutter;

XComponent用来做EGL、OpenGL ES媒体数据的写入,类似安卓的TextureView和SurfaceView的集合体,提供Surface。

**RawFile & 应用沙箱**

![image.png](https://forums-obs.openharmony.c ... j92yf7itiilczyi.png "image.png")

文件有沙箱路径,以及真实物理路径。

**Napi**

![image.png](https://forums-obs.openharmony.c ... o1zgcczouu1mzca.png "image.png")

Napi可实现ArkTS/TS/JS与C/C++之间的交互,提供的接口名与三方Node.js一致;

ArkTS/TS/JS侧通过import引入native侧的so文件。
[/md]
作者: 论坛小助手    时间: 2024-4-2 16:05
团结引擎全面适配OpenHarmony系统,包括Ability框架、XComponent、ArkUI、音视频、文件系统、触控系统等。

能兼容老版本项目,支持一键切换平台和构建出包。提供快速迭代速度,直连设备支持Patch and Run/Build and Run,同时能导出Ability Project。完善的Profiler支持包括引擎Profiler适配和平台Profiler,以及专有的C#与ts交互API方便SDK接入。




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5