【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.mfbz.cn/a/294347.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CyberLink的视频编辑软件PowerDirector Ultimate 2024 22.0版本在win系统下载与安装配置

目录 前言一、PowerDirector Ultimate安装二、使用配置总结 前言 PowerDirector Ultimate是由CyberLink公司开发的一款视频编辑软件,其为高级版本,拥有多种强大的视频编辑和效果功能。该软件具有许多强大的功能和工具,包括多轨时间线编辑、视…

DevEco Studio集成ArkUI-X

DevEco StudioHarmonyOs教程 (免费学): 最新HarmonyOS系列教程下载地址-IT营大地老师--更新中 ArkUI-X进一步将ArkUI扩展到了多个OS平台:目前支持OpenHarmony、HarmonyOS、Android、 iOS,后续会逐步增加更多平台支持。…

手写一个加盐加密算法(java实现)

目录 前言 什么是MD5?? 加盐算法 那别的人会不会跟你得到相同的UUID? 如何使用盐加密? 代码实现 前言 对于我们常见的登录的时候需要用到的组件,加密是一个必不可少的东西,如果我们往数据库存放用户…

怎么查询网络出口IP

怎么查询自己的网络的出口IP 背景 一般跟第三方服务进行接口数据交互的时候,对方都会让我们提供调用接口的网络的出口IP,对方会把该IP地址加到对方的白名单中。这样我们才能有权限进行接口的访问。 解决办法 下面介绍三种常用的查询网络出口IP的办法…

弧垂观测手段再升级!输电线路导线弧垂检测装置的应用_深圳鼎信

输电线路导线弧垂是指在输电线路中导线的水平位置与塔杆之间的垂直距离。导线的弧垂是确定导线张力、塔杆高度等参数的重要依据。通过测量弧垂及时调整弧垂大小对保证输电线路的安全运行具有重要作用。鼎信将介绍两种测量弧垂的方法,一起来学习一下吧! …

设计模式篇章(2)——五种创建者模式

创建者模式主要思考如何创建一个对象,如何将对象的创建与使用分离。一般初级程序员都是new一个对象,然后紧接着使用这个对象,在某些场景中这样子是有问题的,需要使用创建者模式替代的(例如使用单例模式)。设…

第G2周:人脸图像生成(DCGAN)

🍨 本文为[🔗365天深度学习训练营学习记录博客\n🍦 参考文章:365天深度学习训练营\n🍖 原作者:[K同学啊 | 接辅导、项目定制]\n🚀 文章来源:[K同学的学习圈子](https://www.yuque.co…

Linux第1步_VMware软件安装

1、双击“VMware-workstation-full-15.5.0-14665864”,得到下面的界面: 2、等待几分钟,得到下面的界面: 3、点击“下一步” 4、勾选“我接受许可协议中的条款(A)”,见下图: 5、点击“下一步”,得…

爬取猫咪交易网

爬取猫咪品种,价格等在售数据 代码展现: 具体代码: import requests import re import os filename 声音// if not os.path.exists(filename): os.mkdir(filename) def down_load(page): for page in range(page): page …

Python3 元组----20240105

Python 的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号 ( ),列表使用方括号 [ ]。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。 >>> tup1 = (Google, Runoob, 1997, 2000) >>> tup2 = (1<

如何选择最适合的采购付款 (P2P) 解决方案?

无论企业的业务流程执行得如何&#xff0c;流程中始终存在改进空间。更好的管理系统是获得更好结果的关键&#xff0c;尤其是当企业处于增长阶段时。强大的采购到付款&#xff08;P2P&#xff09;系统是加快采购流程&#xff0c;同时保持采购支出可见性的最有效方法之一。 什么…

Mysql 分割字符串,一行变多行,@rownum,mysql.help_topic

1 前言 朋友最近遇到一个比较棘手的 sql 问题&#xff0c;让我帮忙看看&#xff1a; 他有两张表 testa 和 testb &#xff0c;一个表存的日期&#xff0c;另一个表存字符串例如 2023-11-01,2023-11-02&#xff0c;如何将这两张表关联起来&#xff0c;只查 testa 表的数据&#…

什么是负载均衡?什么情况下又会用到负载均衡

什么是负载均衡 在大型的网络应用中&#xff0c;使用多台服务器提供同一个服务是常有的事。平均分配每台服务器上的压力、将压力分散的方法就叫做负载均衡。 [利用 DNS来实现服务器流量的负载均衡&#xff0c;原理是“给网站访问者随机分配不同ip”] 什么情况下会用到负载均…

WAF的概念、分类和应用

WAF&#xff08;Web Application Firewall&#xff0c;Web应用防火墙&#xff09;是一种保护Web应用程序的安全工具&#xff0c;它可以监控、过滤和阻止Web应用程序和互联网之间的HTTP流量。WAF通常可以防御一些常见的Web攻击&#xff0c;如跨站请求伪造&#xff08;CSRF&#…

救命,现在当行政真的可以不用太老实

行政的姐妹在哪里啊&#xff1f;这个打工工具真的要知道哦&#xff01; 信我&#xff0c;真的好用啊&#xff01;终于不用自己写总结写材料的啊&#xff01; 这东西写啥都可以&#xff0c;只要输入需求马上就写好了啊&#xff0c;什么工作总结&#xff0c;活动策划方案&#…

Security的入门和流程分析

Security的入门和流程分析 问题&#xff1a;访问一个controller方法之前进行一个权限验证&#xff1f; 在controller里面的每一个handler无论什么访问都要进行一个校验&#xff0c;但是对于login logout 验证码这种Handler处理器是放行的 1.使用过滤器拦截器 注意两者区别 过滤…

2023中国PostgreSQL数据库生态大会-核心PPT资料下载

一、峰会简介 大会以“极速进化融合新生”为主题&#xff0c;探讨了PostgreSQL数据库生态的发展趋势和未来方向。 在大会主论坛上&#xff0c;专家们就PostgreSQL数据库的技术创新、应用实践和生态发展进行了深入交流。同时&#xff0c;大会还设置了技术创新&云原生论坛、…

计算机创新协会冬令营——暴力枚举题目05

这道题挺基础但是挺多坑的。(•́へ•́╬) 题目 204. 计数质数 - 力扣&#xff08;LeetCode&#xff09; 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 示例 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;4 解释&#xff1a;小于 10 的质…

手机与电脑投屏互联方案

手机 to 电脑 无线显示器 搜索"无线显示器"找到系统自带的应用 没有的话, 可能需要安装一下 电脑上打开无线显示器 手机中打开投屏 就投上去了, 感觉很卡, 不是很流畅,但是是系统自带的功能, 比较方便 无法连接时可以检查一下这里的设置 scrcpy screen copy 屏幕…

Socket与TCP的关系

前言 相信大家对于TCP已经非常熟悉了&#xff0c;学习过计算机网络的同学对于它的连接和断开流程应该已经烂熟于心了吧。 那么Socket是什么&#xff1f; Socket是应用层与TCP/IP协议簇通信的中间软件抽象层&#xff0c;它是一组接口。在设计模式中&#xff0c;Socket其实就是…
最新文章