鸿蒙开发学习:初探【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.rhkb.cn/news/326680.html

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

相关文章

css--控制滚动条的显示位置

各种学习后的知识点整理归纳,非原创! ① direction属性 滚动条在左侧显示② transform:scaleY() 滚动条在上侧显示 正常的滚动条会在内容超出规定的范围后在区域右侧和下侧显示在有些不正常的需求下会希望滚动条在上侧和左侧显示自己没有想到好的解决方案…

uniapp 使用renderjs的一些详细介绍

一、简介 官方链接:uniapp官网中的renderjs方法的详细介绍 二、renderjs 定义 renderjs是一个运行在视图层的js。它比WXS更加强大。它只支持app-vue和web。 作用: 大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力。在视图层操作d…

cmake工程导入新电脑环境报错

项目场景: 提示:这里简述项目相关背景: 在一台电脑上运行得很好的cmake工程,导入新电脑环境报错 问题描述 提示:这里描述项目中遇到的问题: 例如:数据传输过程中数据不时出现丢失的情况&…

SSH 免密登录,设置好仍然需要密码登录解决方法

说明: ssh秘钥登录设置好了,但是登录的时候依然需要提供密码 查看系统安全日志,定位问题 sudo cat /var/log/auth.log或者 sudo cat /var/log/secure找到下面的信息 Authentication refused: bad ownership or modes...(网上的…

软件需求工程习题

1.(面谈)是需求获取活动中发生的需求工程师和用户间面对面的会见。 2.使用原型法进行需求获取,(演化式)原型必须具有健壮性,代码质量要从一开始就能达到最终系统的要求 3.利用面谈进行需求获取时&#xf…

【iOS逆向与安全】网上gw如何自动登录与签到SM2,SM3,SM4算法加解密

1.下载 app 2.frida 调试 3.抓包查看接口 4.分析加密数据 5.易语言编写代码 1 .开始下载 下载好发现有越狱检测,检测点为: -[AppDelegate isJailBreak]; 于是编写插件xm代码 : %hook AppDelegate- (void)isJailBreak{NSLog("AppDelegate is…

通过 Java 操作 redis -- hash 哈希表基本命令

目录 使用命令 hset,hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys,hvals 使用命令 hmget,hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis,首先要连接上 redis 服务…

STM32使用ESP01S连接阿里云物联网平台

一、ESP01S烧录MQTT固件准备 首先准备好烧录工具,可以从官网上进行下载。 MQTT固件官网网址:AT固件汇总 | 安信可科技 (ai-thinker.com) 进去后如下图界面,向下翻找找到MQTT固件(1471)下载固件即可。 烧录工具光网地…

Python自动化测试 | 如何使用Robot Framework进行自动化测试?

你还在手动测试?不妨了解一下更高效、准确且简单的测试方法——使用Python的Robot Framework进行自动化测试。 什么是Robot Framework? Robot Framework是一款开源的Python自动化测试框架,它基于关键字驱动的思想,具有易读、易扩…

我是如何免费抵御一个多月的 DDos/CC 攻击的?

今天明月给大家详细分享一下我的博客是如何免费抵御了长达一个多月的 DDos/CC 攻击的,在【现在 DDos/CC 攻击门槛低的可怕!】一文里明月就说过现在 DDos/CC 攻击几乎是没有门槛的,任何一个老鼠屎在群里看到你的博客都可以轻松便捷的发动一次 …

鸿蒙开发接口Ability框架:【AbilityMonitor】

AbilityMonitor AbilityMonitor模块提供匹配满足指定条件的受监视能力对象的方法的能力,最近匹配的能力对象将保存在AbilityMonitor对象中。 说明: 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起…

【算法练级js+java】重复给定字符n次

题目 Repeats the given string n times.(复制指定的字符串n次) 期望结果 /** * Repeats the given string n times. * * repeat(‘, 3) * // > **’ * * repeat(‘abc’, 2) * // > ‘abcabc’ * * repeat(‘abc’, 0) * // > “” **/ 代码…

【superset】基于MySQL的BI数据分析可视化实战案例(已更新)

1.熟悉、梳理、总结下superset可视化分析实战案例知识体系,一直想探索有效可用的可视化分析方案,大多收费或不好用,这里,借此机会总结、更新下。 2.复杂度高,遇到并解决的问题较多,尝试了很多次。 3.欢迎批评指正,跪谢一键三连! 基于MySQL的BI数据分析可视化实战案例文…

picoCTF-Web Exploitation-Trickster

Description I found a web app that can help process images: PNG images only! 这应该是个上传漏洞了,十几年没用过了,不知道思路是不是一样的,以前的思路是通过上传漏洞想办法上传一个木马,拿到webshell,今天试试看…

[C++核心编程-09]----C++类和对象之继承

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

迅睿CMS中实现关键词搜索高亮

在迅睿CMS系统中实现关键词搜索高亮是提升用户体验和搜索效果的重要手段。当用户搜索某个关键词时,将搜索结果中的关键词高亮显示,可以帮助用户更快速地定位到所需信息。 关键词高亮的实现 在迅睿CMS中,你可以使用内置的dr_keyword_highlig…

使用npm script运行webpack

npm(Node Package Manager)是 Node.js 的包管理工具,用于安装、发布和管理 Node.js 包。 在安装node的时候,就默认安装了npm。 Npm Script 则是 Npm 内置的一个功能,允许在 package.json 文件里面使用 scripts 字段定…

C#之partial关键字

在C#中,partial关键字用于声明一个类、结构体、接口或方法的分部定义。这意味着可以将一个类或其他类型的定义分成多个部分,这些部分可以在同一个命名空间或程序集中的多个源文件中进行定义。当编译器编译这些部分时,会将它们合并成一个单独的…

机器学习面试篇

如何理解机器学习数据集的概念 数据集是机器学习的基础,它包括了用于训练和测试模型所需的数据。数据集通常以矩阵的形式存在,其中每一行代表一个样本(或实例),每一列代表一个特征(或属性)。…

宝塔Linux面板5.9版本升级新版失败解决方法

下载地址:宝塔Linux面板5.9升级教程 宝塔5.9版本升级最新版宝塔失败,可以参考这份详细教程(不断更新中) 安装要求: Python版本: 2.6/2.7(安装宝塔时会自动安装) 内存:1…