构建第一个ArkTS应用(纯HarmonyOS应用)

1. 安装开发工具

在华为开发者官方上下载HarmonyOS应用专用的开发工具,链接地址:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者

要想使用开发工具让项目跑起来,需要10G的磁盘空间。开发工具需要的磁盘空间为2.36G;SDK需要7.5G。(PS:我的Mac磁盘本来就少,现在更不够了)。

2. 创建ArkTS工程

构建第一个纯HarmonyOS的应用

  1. 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。
  2. 选择Application应用开发(本文以应用开发为例,Atomic Service对应为元服务开发),选择模板“Empty Ability”,点击Next进行下一步配置。

  1. 进入配置工程界面,Compile SDK选择“3.1.0(API 9)”,Model 选择“Stage”,其他参数保持默认设置即可。

这里补充下,打开之后项目可使用低代码构建页面进行开发。

  1. 点击Finish,工具会自动生成示例代码和相关资源,等待工程创建完成。

3. 认识ArkTS工程结构目录

项目构建完成之后的结构目录

  • AppScope > app.json5:应用的全局配置信息。
  • entry:HarmonyOS工程模块,编译构建生成一个HAP包。
    • src > main > ets:用于存放ArkTS源码。
    • src > main > ets > entryability:应用/服务的入口。
    • src > main > ets > pages:应用/服务包含的页面。
    • src > main > resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。
    • src > main > module.json5:Stage模型模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。
    • build-profile.json5:当前的模块信息、编译信息配置项,包括buildOption、targets配置等。其中targets中可配置当前运行环境,默认为HarmonyOS。
    • hvigorfile.ts:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。
  • oh_modules:用于存放三方库依赖信息。
  • build-profile.json5:应用级配置信息,包括签名、产品配置等。
  • hvigorfile.ts:应用级编译构建任务脚本。

4. 构建页面

  1. 工程同步完成后,在“Project”窗口,点击“entry > src > main > ets > pages”,打开“Index.ets”文件,可以看到页面由Text组件组成。“Index.ets”文件的示例如下:
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

使用预览功能是报错:

Build task failed. Open the Run window to view details.

解决:在设置中,找到Build->Hvigor将Enable the Daemon for tasks选项给关掉。如图:

  1. 创建第二个页面,右键点击“pages”文件夹时,选择“New > Page”,新建一个页面。修改页面中文字显示
@Entry
@Component
struct SecondPage {
  @State message: string = 'SecondPage'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

5. 实现页面间跳转

  1. 修改第一个页面,实现从第一个页面点击按钮跳转到第二个页面
import router from '@ohos.router'
import hilog from '@ohos.hilog'
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)

        // 添加按钮,以响应用户点击
        Button('Next')
          .fontSize(30)
          .fontWeight(FontWeight.Bold)
          .type(ButtonType.Capsule)
          .margin({
            top: 20
          })
          .width('40%')
          .height('5%')

          // 设置点击事件,进行跳转
          .onClick(() => {
              // 跳转到第二页
              router.pushUrl({ url: 'pages/SecondPage' }).then(() => {
            }).catch((err) => {
                hilog.error(0x0000, "index", 'Failed to jump to the second page')
            })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

如下预览页面,点击按钮即可实现页面跳转

6. 调试运行

使用远程模拟器运行HarmonyOS应用查看具体效果

关注我,我们一起成长

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

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

相关文章

Python笔记1.2(with open() as file和open()、logging、os、shutil、glob、decode和encode)

Python笔记1.1(字符串日期转换、argparse、sys、overwrite、eval、json.dumpsloads、os.system(cmd)、zfill、endswith、深浅拷贝) Python笔记2(函数参数、面向对象、装饰器、高级函数、捕获异常、dir) Python笔记1.2 13、with …

Linux(12):磁盘配额(Quota)与进阶文件系统管理

磁盘配额(Quota)的应用与实作 Quota 的一般用途: 针对 www server ,例如:每个人的网页空间的容量限制; 针对 mail server,例如:每个人的邮件空间限制。 针对 file server,例如:每个人最大的可用…

Python 爬虫 之scrapy 框架

文章目录 常用的命令开始爬虫请求与响应让控制台只输出想要的信息创建一个py 文件来帮忙运行爬虫 工作原理图实战 常用的命令 Scrapy是一个用于爬取网站数据的Python框架,以下是一些常用的Scrapy命令: 开始的时候 用 cd 进入你想创建scrapy 的文件夹 &a…

Java中各种数据类型之间的转换

低类型向高类型自动进行转换,高类型向低类型的准换会丢失数据,整数到字符类型的转换将获取对应编码的字符。 进行高精度向低精度的强制类型准换时,需要将想要转换成的数据类型加一个括号()。 如何完成自动转换呢? 转换前的数据类…

Linux 下命令行启动与关闭WebLogic的相关服务

WebLogic 的服务器类型 WebLogic提供了三种类型的服务器: 管理服务器节点服务器托管服务器 示例和关系如下图: 对应三类服务器, 就有三种启动和关闭的方式。本篇介绍使用命令行脚本的方式启动和关闭这三种类型的服务器。 关于WebLogic 的…

系统地自学 Python

文章目录 如何系统地自学 Python1. 选择合适的 Python 版本2. 安装 Python 和必要的工具3. 学习 Python 的基础知识4. 学习 Python 的高级特性5. Python 的应用领域6. 保持良好的学习习惯 如何系统地自学 Python Python 是一种广泛使用的编程语言,它具有简洁、易读、…

微服务的应用架构

架构描述的是在更高层次将应用拆分为子系统或模块的方法,以及这些子系统之间的交互关系。在一个基于微服务架构构建的应用中,每个服务都需要有自己的架构。 事实上,单体应用在复杂度较低时,它的生产效率是要高于微服务的。只有在…

【Go语言 map源码分析】

map底层数据结构 我们在之前学习C中的map时知道了 map的底层其实是有两种数据结构 这取决于我们要求它有序还是无序 如果说我们要求map是有序的它的底层数据结构就是红黑树如果说我们要求map是无序的它的底层数据结构就是哈希表 但是Go语言中的map数据结构有点特殊 如下图 …

QueryRunner报红处理

如图,有同学反映QueryRunner报红,就是没有导包 自己去找项目的地址,找到web文件夹下的WEB-INF 把这些jar包都粘贴进去,以后项目基本都会用到的,资源自己去找 粘贴好后打开文件的Project Structure 点击Dependencies 点…

github打不开,全网最简单解决方法,没有之一

下载watt toolkit, 选择‘github’,点击‘一键加速’, 具体步骤如下:去电脑微软商店下载watt toolkit,或者直接打开网址https://apps.microsoft.com/detail/9MTCFHS560NG?hlen-us&glUS 如图,点击安装i…

洛谷 B2006 地球人口承载力估计 C++代码

目录 前言 思路点拨 AC代码 结尾 前言 今天我们来做洛谷上的一道题目。 网址:地球人口承载力估计 - 洛谷 题目: 思路点拨 经典牛吃草问题。 解设一个人一年吃一份草。 则x*a-y*b为会多出的草,为什么会多呢?是因为每年都有…

Vue3-路由

VueRouter4路由语法解析 1.创建路由实例由createRouter实现 2.路由模式 1)history模式使用createWebHistory():地址栏不带# 2)hash模式使用createWebHashHistory():地址栏带# 3)参数是基础路径,默认/ …

智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC

@[toc] 智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者…

弦理论的技术探索

弦理论的技术探索 一、引言 弦理论,作为现代物理学中的一个重要分支,旨在揭示宇宙的终极规律。它认为,宇宙中的一切物质和能量都是由微小的弦振动产生的。本文将深入探讨弦理论的技术层面,包括其数学基础、物理应用以及计算机模拟等方面。 二、弦理论的数学基础 弦理论的…

【Delphi】中使用Indy进行UDP广播通信

目录 一、服务器端(接收端) 二、客户端(广播端) Delphi中进行UDP广播通信函数代码: 一、服务器端(接收端) 在主界面上返放置一个TIdUDPServer控件,设置好该控件的监听端口&#…

C++笔试训练day_1

文章目录 选择题编程题 选择题 编程题 #include <iostream> #include <algorithm> #include <vector>using namespace std;int main() {int n 0;cin >> n;vector<int> v;v.resize(3 * n);int x 0;for(int i 0; i < v.size(); i){cin >&…

94基于matlab的蚁群算法 (ACO) 对付的图像边缘检测问题

基于matlab的蚁群算法 (ACO) 对付的图像边缘检测问题。提出基于蚁群算法的边缘检测方法是能够建立一个信息素矩阵表示提出了一种在图像每个像素位置的边缘信息根据大量的蚂蚁的运动有哪些派去在图像上移动。此外&#xff0c;运动这些蚂蚁是由图像的局部变化驱动强度值。数据可更…

什么是Anaconda

Anaconda的安装也很方便。打开这个网站Anaconda下载&#xff0c;然后安装即可。 Anaconda可以帮助我们解决团队之间合作的包依赖管理问题。在没有使用Anaconda之前&#xff0c;如果你的Python程序想让你的同事运行&#xff0c;那么你的同事可能会遇到很多包依赖问题&#xff0…

调优--学习笔记

1&#xff0c;Presto调优 数据存储格式 1&#xff09;合理设置分区 与Hive类似&#xff0c;Presto会根据元信息读取分区数据&#xff0c;合理的分区能减少Presto数据读取量&#xff0c;提升查询性能。 2&#xff09;使用列式存储 Presto对ORC文件读取做了特定优化&#xff0c…

【Python】tensorflow学习的个人纪录(2)

actor.learn(s, a, td_error)def learn(self, s, a, td):s s[np.newaxis, :]feed_dict {self.s: s, self.a: a, self.td_error: td}_, exp_v self.sess.run([self.train_op, self.exp_v], feed_dict)return exp_v输入变量的数值&#xff1a; 步进&#xff1a; []---->[…