【HarmonyOS开发】ArkUI-X 跨平台框架(使用ArkTs开发AndroidIOS)

图片

ArkUI-X 跨平台框架进一步将 ArkUI 开发框架扩展到了多个OS平台,目前支持OpenHarmony、HarmonyOS、Android、 iOS,后续会逐步增加更多平台支持。开发者基于一套主代码,就可以构建支持多平台的精美、高性能应用。

一、跨平台框架有哪些?

1、React Native

  • React Native 是一个基于 JavaScript 和 React 的开源框架,由 Facebook 开发和维护。

  • 它使用一种称为 JSX 的语法,将组件的结构和行为描述为声明式的代码。

  • React Native 提供了访问设备原生功能的能力,通过使用内置的原生组件和模块,开发人员可以创建具有原生用户体验的应用程序。

  • 由于 React Native 的代码可以在多个平台上共享和重用,这使得开发和维护跨平台应用变得更加高效。

2、Flutter

  • Flutter 是一个由 Google 开发的开源框架,用于构建高性能、跨平台的移动应用程序。

  • Flutter 使用 Dart 语言,它具有现代化的语法和特性,包括强类型、异步编程和热重载。

  • Flutter 提供了自己的渲染引擎,可以实现高性能的用户界面,并且可以在 iOS、Android 和 Web 平台上运行。

  • 通过使用 Flutter,开发人员可以通过一套代码库创建漂亮、响应式且原生般的应用程序。

3、Xamarin

  • Xamarin 是一个跨平台移动应用开发框架,由 Microsoft 推出。

  • 它使用 C# 语言和 .NET 平台,开发人员可以使用共享的代码库构建原生应用程序,包括 iOS、Android 和 Windows。

  • Xamarin 提供了对设备功能和原生 API 的访问,开发人员可以使用 Xamarin.Essentials 来访问常用的设备功能,如相机、传感器等。

  • Xamarin 还提供了丰富的工具和组件库,以提高开发效率并简化跨平台应用程序的创建过程。

4、Ionic

  • Ionic 是一个基于 Web 技术的开源框架,用于构建跨平台的移动应用程序。

  • 它使用 HTML、CSS 和 JavaScript 来构建应用程序,并通过使用 WebView 在不同平台上运行。

  • Ionic 结合了 Angular 框架和 Cordova 插件,提供了丰富的 UI 组件和原生功能的访问能力。

  • 通过 Ionic,开发人员可以使用一套代码库创建移动应用程序,并在 iOS、Android 和 Web 平台上进行部署。

5、NativeScript

  • NativeScript 是一个开源的跨平台移动应用框架,允许开发人员使用 JavaScript、TypeScript 或 Angular 构建原生应用程序。

  • 它通过使用原生组件和 API,以及内置的 JavaScript 运行时,将 JavaScript 代码转换为本机代码。

  • NativeScript 提供了对设备功能的访问,开发人员可以使用插件来扩展应用程序的功能。

  • NativeScript 还支持 Angular、Vue.js 和 React 框架,以满足开发人员的不同需求。

6、uniapp

  • UniApp 使用 Vue.js 作为主要的开发框架,并提供了一套基于 Vue.js 的组件和 API,使开发人员可以使用熟悉的开发方式构建跨平台应用。开发人员可以编写一次代码,然后通过编译和转换过程,在不同平台上生成对应的原生应用程序。

  • UniApp 提供了访问设备功能和原生 API 的能力,开发人员可以使用插件或内置的 API 来实现与设备的交互,如访问相机、地理位置、传感器等。此外,UniApp 还提供了一些特定平台的扩展能力和优化选项,以提供更好的用户体验和性能。

二、OpenHarmony的跨平台ArkUI-X

1、采用 C++ 编写整体后端引擎代码,保持在多平台的可移植性,最小化平台依赖,降低平台移植成本。 

2、整体绘制采用自渲染机制,降低平台依赖,同时进一步提升绘制效果的一致性。 

3、抽象出平台适配层以及平台桥接层,以便不同平台的适配。

图片

1、 下载DevEco Studo 4.0 beta2+

IDE下载地址width=device-width,initial-scale=1.0icon-default.png?t=N7T8https://docs.openharmony.cn/pages/v4.0/zh-cn/release-notes/OpenHarmony-v4.0-release.md/#%E9%85%8D%E5%A5%97%E5%85%B3%E7%B3%BB

图片

2、 安装ArkUI-X的SDK

2.1 安装OpenHarmony的API10

图片

2.1 安装ArkUI-X的SDK

图片

3、 创建ArkUI-X项目

3.1 新建 => 导入 => 导入示例工程

图片

3.2 基于示例Hello World工程进行ArkUI-X进行开发

Harmony改为OpenHarmony,然后选择ArkUI-X下的示例工程

图片

3.3 创建完成后,自动检查系统环境,安装依赖

图片

4、 目录说明

编译完成后,直接将.arkui-x中的Android/IOS导入对应的平台即可

ArkUI-X应用工程├── .arkui-x│   ├── android                 // Android平台相关代码│   └── ios                     // iOS平台相关代码├── .hvigor├── .idea├── AppScope├── entry├── hvigor├── oh_modules├── build-profile.json5├── hvigorfile.ts├── local.properties└── oh-package.json5

图片

期待可以兼容更多的平台,eg:Linux、Windows等...

三、扩展:XComponent(动态加载/EGL/OpenGLES渲染

遇到一个好玩的组件,在开发扫一扫功能时用到了,记录一下

XComponent组件作为一种绘制组件,通常用于满足开发者较为复杂的自定义绘制需求,例如相机预览流的显示和游戏画面的绘制。 

其可通过指定其type字段来实现不同的功能,主要有两个“surface”和“component”字段可供选择。

对于“surface”类型,开发者可将相关数据传入XComponent单独拥有的“surface”来渲染画面。 

对于“component”类型则主要用于实现动态加载显示内容的目的。

名称描述
SURFACE用于EGL/OpenGLES和媒体数据写入,开发者定制的绘制内容单独展示到屏幕上。
COMPONENTXComponent将变成一个容器组件,并可在其中执行非UI逻辑以动态加载显示内容。
TEXTURE用于EGL/OpenGLES和媒体数据写入,开发者定制的绘制内容会和XComponent组件的内容合成后展示到屏幕上。

说明:

type为COMPONENT(“component”)时,XComponent作为容器,子组件沿垂直方向布局:

  • 垂直方向上对齐格式:FlexAlign.Start

  • 水平方向上对齐格式:FlexAlign.Center

@Builder
function addText(label: string): void {Text(label).fontSize(40)
}@Entry
@Component
struct Index {@State message: string = 'Hello XComponent'@State messageCommon: string = 'Hello World'build() {Row() {Column() {XComponent({ id: 'xcomponentId-container', type: 'component' }) {addText(this.message)Divider().margin(4).strokeWidth(2).color('#F1F3F5').width("80%")Column() {Text(this.messageCommon).fontSize(30)}}}.width('100%')}.height('100%')}
}

动态加载@BuilderaddText函数

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

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

相关文章

猫头虎分享已解决Bug || 解决Vue.js not detected的问题 ️

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

【ChatGPT+】创新与教育的交汇点:中国训练工程师的崛起

人工智能总价值超15.7万亿美元 根据国际数据公司(IDC)的预测,到2030年,全球人工智能市场总价值将超过15.7万亿美元,这表明人工智能技术将在未来几十年内得到广泛应用并取得长足发展。 人工智能的快速发展将对各个领域…

Numpy和Pandas知识点总结

1.python常见的开源库介绍 1.1numpy 一个运行速度非常快的数学库,主要用于数组计算 1.2pandas 一个强大的“分析结构化数据”的工具集,底层依赖numpy 用于数据挖掘和数据分析,同时也提供数据清洗功能 pandas主要有两种数据结构&#xf…

BigDecimal的性能问题

BigDecimal 是 Java 中用于精确计算的数字类,它可以处理任意精度的小数运算。由于其精确性和灵活性,BigDecimal 在某些场景下可能会带来性能问题。 BigDecimal的性能问题 BigDecimal的性能问题主要源于以下几点: 内存占用:BigDec…

mysql+关掉密码过期

mysql关掉密码过期 要在MySQL中关闭密码过期功能,可以按照以下步骤进行操作: 登录到MySQL服务器。 使用管理员账户(如root)连接到数据库。 mysql -uroot -ppassword 运行以下命令来查看当前的密码过期设置: SHOW…

金蝶EAS pdfviewlocal.jsp接口存在任意文件读取漏洞 附POC软件

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 金蝶EAS简介 微信公众号搜索:南风漏洞复现文库 该…

2023十大最具商业影响力量子公司 | 光子盒年度系列

量子技术以其广泛的应用范围和对多个领域的深远影响,是当之无愧的“通用底座”技术,其潜在的产业变革力正在展现,尽管当前量子技术与人工智能或虚拟现实等技术领域相比,量子对大多数人来说还有些“看不透”。 2023年,量…

【Mars3d】new mars3d.layer.GeoJsonLayer({不规则polygon加载label不在正中间的解决方案

问题: 1.new mars3d.layer.GeoJsonLayer({type: "polygon",在styleOptions里配置label的时候,发现这个 不规则polygon加载的时候,会出现label不在中心位置。 graphicLayer new mars3d.layer.GeoJsonLayer({ name: "全国省界…

JVM的FastThrow优化机制

前言: 前一阵子,在公司排查线上问题发现:出问题的方法报空指针异常,但是没有异常堆栈信息和Message。我一开始以为是代码中做了处理,但是经过翻阅代码发现不是。最后一番查找资料,这种现象是JVM的一种优化机…

Open3D 点云下采样抽稀(7)

Open3D 点云下采样抽稀(7) 一、算法介绍二、算法实现1.代码 一、算法介绍 点云抽稀在计算机图形学和计算机视觉中有着广泛的应用,其作用包括但不限于以下几点: 数据压缩: 点云抽稀可以有效地减少点云数据量&#xff0…

问答领域的基本了解

问答领域是人工智能领域中的一个重要研究方向,旨在让计算机能够理解人类提出的问题,并以自然语言形式回答这些问题。问答系统可以应用于各种场景,包括搜索引擎、虚拟助手、智能客服等。 一.目标 目标: 问答系统的主要目标是使计…

为何大厂急招鸿蒙开发工程师?别有洞天

正确看待鸿蒙不再兼容安卓版本,而大厂急招鸿蒙工程师这一举动已经是预料之中的。我们一步步来看鸿蒙是怎么发展过程的。为什么互联网大厂急招鸿蒙开发岗位? 鸿蒙的发展历程 华为历经4年,从2019年开始的鸿蒙问世2.0版本到2023年末4.0宣布“不…

r语言拟合曲线

r语言拟合曲线 #圆滑曲线 library(ggalt) library(ggplot2) df <- read.csv("lqs-1.csv",headerT) p2<-ggplot(datadf,aes(xx,yy))geom_point(size1) geom_smooth(span0.1)p2结果

CTFshow web入门web128-php特性31

开启环境: 一个新的姿势&#xff0c;当php扩展目录下有php_gettext.dll时&#xff1a; _()是一个函数。 _()gettext() 是gettext()的拓展函数&#xff0c;开启text扩展get_defined_vars — 返回由所有已定义变量所组成的数组。 call_user_func — 把第一个参数作为回调函数调…

【算法练习】leetcode算法题合集之二叉树篇

递归遍历基础篇 前序遍历&#xff0c;中序遍历&#xff0c;后序遍历是根据处理根节点的位置来命名的。 树的处理大多用到了递归&#xff0c;递归需要知道终止条件。 前序遍历&#xff08;中左右&#xff09; 144.二叉树的前序遍历 中左右&#xff0c;先处理根节点&#xff0c;…

Java面试高招:程序员如何在面试中脱颖而出

Java面试高招&#xff1a;程序员如何在面试中脱颖而出 《Java面试高招&#xff1a;程序员如何在面试中脱颖而出》摘要引言面试经历面试失败的反思 面试技巧侦探式的问题解决无敌铁金刚的坚定决心 参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1…

4.5 A TILED MATRIX MULTIPLICATION KERNEL

我们现在准备展示一个tiled矩阵乘法内核&#xff0c;该内核使用共享内存来减少对全局内存的流量。图中4.16显示的内核。实施图4.15.中所示的阶段。在图4.16中&#xff0c;第1行和第2行声明Mds和Nds为共享内存变量。回想一下&#xff0c;共享内存变量的范围是一个块。因此&#…

Redis原理篇(Dict的收缩扩容机制和渐进式rehash)

Dict&#xff08;即字典&#xff09; Redis是一种键值型数据库&#xff0c;其中键与值的映射关系就是Dict实现的。 Dict通过三部分组成&#xff1a;哈希表&#xff08;DictHashTable&#xff09;&#xff0c;哈希节点(DictEntry)&#xff0c;字典&#xff08;Dict&#xff09…

书生·浦语大模型全链路开源体系 学习笔记 第二课

基础作业&#xff1a; 使用 InternLM-Chat-7B 模型生成 300 字的小故事&#xff08;需截图&#xff09;。熟悉 hugging face 下载功能&#xff0c;使用 huggingface_hub python 包&#xff0c;下载 InternLM-20B 的 config.json 文件到本地&#xff08;需截图下载过程&#xf…

tiktok云手机有用吗?用哪个好?

很多做独立站的跨境卖家都会搭配一些社媒平台给自己引流带货&#xff0c;比如说目前很火的TikTok&#xff0c;这也是目前比较有效的一种引流方式。本文将介绍tiktok运营方法以及如何用tiktok云手机规避运营风险。 TikTok是个不错的风口&#xff0c;不过我们在国内想要运营好Tik…