鸿蒙开发学习:初探【ArkUI-X】

ArkTS 是华为自研的开发语言。它在TypeScript(简称TS)的基础上,匹配 ArkUI 框架,扩展了声明式 UI 、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。

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

简单来说,ArkTS + ArkUI-X 对标的框架为 flutter,一次代码,编译为 native 全平台运行

本文内容中会教大家如何用 ArkUI-X 开发一个 Android APP

IDE 获取

HUAWEI DevEco Studio

鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

首先需要下载支持 ArkUI-X 套件的华为开发工具 DevEco ,版本为 4.0 以上,目前可以下载预览版进行体验。下载地址:

HUAWEI DevEco Studio 4.0 Beta2

标题地址
Windows x64下载地址
Mac(Intel)下载地址
Mac(Arm)下载地址

安装过程很简单,这东西是基于 IDEA 做的,和 Android Studio 体验一致

Android Studio

ArkUI-X 可以将 ArkTS 项目编译为一个 Android 项目,使用 Android Studio 可以将其打包为 APK。

Android Studio 安装方法就不赘述了。下载地址:

[Download Android Studio & App Tools - Android Developers (google.cn)]

环境搭建

初次进入

DevEco 安装完成后,首次进入需要设置 nodejs 与 ohpm。可以选择本机已经安装好的路径,若本机没有安装 nodejs 与 ohpm 也可以在这里下载安装。

注意:目前鸿蒙开发支持的 nodejs 版本为 14 和 16,如果本机装了 18 版本的 nodejs 需要先卸载,将全局 nodejs 替换为 16。不然后续项目开发中会遇到各种问题。

上面这段话加粗的目的就是,我昨天头铁使用 nodejs 18 ,踩坑太多了。所以建议大家直接将全局 nodejs 使用 16 版本就行,避免不必要的麻烦。这一点我给官方提了 issue 但是还未收到回复。

之后便是无脑下一步,等它下载完成 SDK 与相关依赖即可(你可以将 SDK 路径设置为其他文件夹)。

安装 OpenHarmony SDK

相关依赖下载完成,进入 IDE 首页后,先不急着创建项目,需要安装 OpenHarmony SDK。

点击 More Action , 选择 SDK Manager:

选择 OpenHarmony:

选择后需要指定一下路径,然后它会进行一些下载,等它下载完成:

下载完成后,勾选 API Version 10 相关的选项,点击确定等它下载完成:

安装 ArkUI-X SDK

OpenHarmony SDK 安装完成后,就可以安装 ArkUI-X SDK 了。同样的在设置里面选择 ArkUI-X ,指定路径,等待下载完成。

设置环境变量

ArkUI-X 需要设置好相应的环境变量才能正确使用。若缺少相关环境变量,会有弹窗提示:

所以在装好 Android Studio 后,需要将 Android SDK 添加至环境变量中:

变量名:ANDROID_HOME

变量值:你的 Android SDK 路径

创建项目

创建 Harmon OS 工程

上述步骤完成后,可以创建项目了。这里有很多 Harmon OS 的基础模板,可以任意选择一个进行创建:

这里可以不用设置,保持默认即可。我们需要的是这个模板里面的代码:

创建 OpenHarmony 工程

在创建了一个 Harmon OS 工程后,我们就进入到了 IDE 的实际界面,在此就可以找到创建 OpenHarmony 工程的选项。

为什么要 OpenHarmony 呢?首先要认识到 HarmonOS 和 OpenHarmony 的区别。这个具体区别在此我就不讲了,可能会被当做引战引起某些人不满意。只需要知道重点: ArkUI-X 是基于 OpenHarmony 的技术。在上一节也可以看到,使用 ArkUI-X , 需要安装 OpenHarmony SDK ,而没有去进行 HarmonOS SDK 的相关操作。

在上面菜单栏选择 File - New - Import - Import Sample:

然后选择 OpenHarmony ,选择 ArkUI-X 下的 HelloWorld

创建完成后进入此项目,等它依赖安装完成,在右上角选择 Previewer ,点击运行,就可以通过 OpenHarmony 预览界面进行预览:

这时一个基础的 OpenHarmony APP 工程就创建完成了。

移入代码

此时回到之前步骤创建的 Harmon OS 工程,将里面的 UI 代码移入进来。

进入 Harmon OS 工程的 entry - src - main 目录,复制里面的 ets 与 resources 目录:

同样的,在 OpenHarmony 工程中删掉这两个目录,替换为从 Harmon OS 工程复制的 etsresources

上述两个文件夹替换完成后,将同位置的 module.json5 文件中的内容也替换过去

整体步骤就是这样:

module.json5 的 deviceTypes 这样写,在预览的时候就可以选择用手机模式还是平板模式:

再次预览,就可以看到之前通过 Harmony OS 工程模板创建的界面显示在了这个 OpenHarmony 预览界面上

编译 OpenHarmony 工程

在 DevEco 菜单栏,选择 Build App,在编译为 OpenHarmony App 的同时,也会生成 Android 与 IOS 项目

编译完成后,可以看到生成的 Android 工程了:

在 Android 中运行

HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿

搜狗高速浏览器截图20240326151344.png

由于 ArkUI-X 编译出来的为 native 文件,只能在 ARM 上运行。Android Studio 提供的模拟器为 x64 架构,所以无法在 Android Studio 的模拟器中预览程序。

将上述生成的 Android 工程导入至 Android Studio ,等待 Gradle 初始化完成:

然后将它打包为 APK :

发送到手机上安装运行,可以看到一切正常 :

在 LibChecker 中也可以看到该 APP 使用了 ArkUI 的依赖:

总结

至此基于 ArkUI-X 的跨平台开发流程已经初步了解了,后续就是根据华为的文档,学习 ArkTS ,开发实质性的应用程序,以及更深入地进行相关探索。

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

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

相关文章

线程同步--条件变量,信号量

生产者和消费者模型 案例 /*生产者消费者模型&#xff08;粗略的版本&#xff09; */ #include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <unistd.h>// 创建一个互斥量 pthread_mutex_t mutex;struct Node{int num;struct Node …

js的桶排序

桶排序&#xff08;Bucket Sort&#xff09;是一种分布式排序算法&#xff0c;它将元素分散到一系列桶中&#xff0c;然后对每个桶中的元素进行排序&#xff0c;并将所有的桶合并起来得到最终的排序结果。桶排序适用于输入的元素均匀分布在一个范围内的情况&#xff0c;它的时间…

DELL T630服务器iDRAC分辨率调整办法

对于Dell T630服务器的iDRAC分辨率调整&#xff0c;您需要登录到iDRAC的Web界面。以下是详细的步骤&#xff1a; 登录iDRAC&#xff1a;在浏览器中输入iDRAC的IP地址&#xff0c;然后使用用户名&#xff08;通常是“root”&#xff09;和密码登录。 导航到虚拟控制台&#xff…

Java中数组的特点、弊端与集合框架的使用

Java中数组的特点、弊端与集合框架的使用 在Java编程中&#xff0c;数组和集合框架&#xff08;Collections Framework&#xff09;都是用于存储数据的重要工具。然而&#xff0c;它们各自有其特点和适用场景。对于初学者来说&#xff0c;理解它们之间的区别和如何正确使用它们…

【C++】手搓读写ini文件源码

【C】手搓读写ini文件源码 思路需求&#xff1a;ini.hini.cppconfig.confmian.cpp 思路 ini文件是一种系统配置文件&#xff0c;它有特定的格式组成。通常做法&#xff0c;我们读取ini文件并按照ini格式进行解析即可。在c语言中&#xff0c;提供了模板类的功能&#xff0c;所以…

C++组合类

类的数据成员不但可以是基本类型&#xff0c;也可以是其它类的对象。 组合类就是指一个类包含其他类的对象作为该类的数据成员。 当组合类创建对象时&#xff0c;其中包含的各个数据成员对象应首先被创建。因此&#xff0c;在创建类的对象时&#xff0c;既要对本类的基本…

NumPy库与PyTorch库的异同点

目录 1.单位的创建和操作 1.创建 2.形状变换 2.数学和统计操作 1.矩阵乘法 2.广播 3.统计计算 3.GPU支持 4.在深度学习中的作用 5.应用范围 NumPy库为数组服务&#xff0c;PyTorch库为张量服务&#xff0c;这是最本质的区别。 1.单位的创建和操作 1.创建 NumPy:使…

三位球形模型应用

计算机图形学&#xff1a;三维球体模型可以用于建立真实感的三维场景&#xff0c;如游戏场景、建筑模型等。 工业设计&#xff1a;三维球体模型可以用于工业设计中的产品造型设计、表面细节设计等。 地球科学&#xff1a;三维球体模型可以用于地球科学领域中的地球内部结构建…

长安汽车:基于云器 Lakehouse 的车联网大数据平台建设

近年来随着智能汽车行业的迅速发展&#xff0c;数据也在呈爆炸式增长。长安大数据平台承接了长安在生产上大部分流量应用及日常生产业务应用。本文将分享长安汽车在车联网场景下大数据平台建设面临的一些挑战和具体落地的实践。 主要内容如下&#xff1a; 1. 背景介绍 2. 长…

Java中使用Comparator接口实现定制排序与对比

Java中使用Comparator接口实现定制排序与对比 在Java中&#xff0c;当我们需要对对象集合进行排序时&#xff0c;除了使用Comparable接口实现自然排序外&#xff0c;还可以使用Comparator接口来实现定制排序。Comparator接口允许我们为某个类的实例定义一种或多种比较方式&…

android图标底色问题,debug与release不一致

背景 在android 8&#xff08;sdk 26&#xff09;之前的版本&#xff0c;直接使用图片文件作为图标&#xff0c;开发时比较容易控制图标&#xff0c;但是不同的安卓定制版本就不容易统一图标风格了。 在android 8及之后的版本&#xff0c;图标对应的是ic_launcher.xml&#x…

【iOS】KVO

文章目录 前言一、KVO使用1.基本使用2.context使用3.移除KVO通知的必要性4.KVO观察可变数组 二、代码调试探索1.KVO对属性观察2.中间类3.中间类的方法3.dealloc中移除观察者后&#xff0c;isa指向是谁&#xff0c;以及中间类是否会销毁&#xff1f;总结 三、KVO本质GNUStep窥探…

基于51单片机的遥控开关仿真

基于51单片机的遥控开关设计 &#xff08;仿真&#xff0b;程序&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 本课题研究的是一款遥控开关&#xff0c;采用51单片机进行发射电路与接收电路的设计&#xff0c;发射电路由单片机最小系统及四个按键构成&am…

经典笔试题:快速排序 计数排序

Problem: 912. 排序数组 思路 &#x1f468;‍&#x1f3eb; 三叶题解 &#x1f496; AC&#xff1a;计数排序 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) class Solution {public int[] sortArray(int[] nums) {int max -50001, min 50001;for (…

【半个月我拿下了软考证】软件设计师高频考点--系统化教学-关系模式

&#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件设计师考点暴击 ⭐&#x1f170;️进入狂砍分⭐ ⭐软件设计师高频考点文档&#xff0c; ⭐软件设计师高频考点专栏 ⭐软件设计师高频考点⭐ &#x1f3b6;&#xff08;A) 考点1,关系模式 考点&#xff1a; 三个模式相…

【JVM基础篇】类加载器分类介绍

文章目录 类加载器什么是类加载器类加载器的作用是什么应用场景类加载器的分类启动类加载器用户扩展基础jar包 扩展类加载器和应用程序类加载器扩展类加载器通过扩展类加载器去加载用户jar包&#xff1a; 应用程序加载器 Arthas中类加载器相关功能 文章说明 类加载器 什么是类…

[C++核心编程-01]----C++内存四区详细解析

目录 前言 正文 01-内存区域简介 02-全局区 03-栈区 04-堆区 05-new操作符 总结 前言 当程序运行时&#xff0c;操作系统会为程序分配一块内存空间&#xff0c;这块内存空间被划分为不同的区域&#xff0c;每个区域有其独特的作用…

赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十二)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 100道 Java 基础面试题&#xff08;四十一&#xff09;-CSDN博客 八十三、OSI的七层模型都有哪些&#xff1f; OSI&#xff08;Open Systems Interconnection&#xff09;参考模型是一个七层的网络通信模型&#xf…

python自定义x坐标名称

在画完图后加上 x[0.1,0.5,1.0,2.0,4.0,6.0,8.0] plt.xticks(x) import matplotlib.pyplot as pltx [1, 2, 3, 4, 5] y [2, 4, 6, 8, 10]plt.plot(x, y) plt.xticks(x, [A, B, C, D, E]) # 设置x轴坐标位置和标签 plt.show()要自定义x坐标名称&#xff0c;你可以使用matplo…

Unity图形图表XChart插件使用

最近做了一款数字孪生项目,其中涉及到了图形图表的应用,网上找了一下,找到了XChart插件,使用起来蛮方便的,不过还有待继续研究,很多细节性的知识点需要进行学习探索。以下是项目中的应用。 官方应用: ![](https://img-blog.csdnimg.cn/direct/ab9de8e84e7b4be4a50ea…