鸿蒙应用开发初体验 HelloWorld

9 月 25 日,华为常务董事、终端 BG CEO、智能汽车解决方案 BU 董事长余承东华为秋季全场景新品发布会上介绍了鸿蒙系统的最新进展:HarmonyOS 4 发布后,短短一个多月升级用户已经超过 6000 万,成为史上升级速度最快的 HarmonyOS 版本。余承东宣布,鸿蒙原生应用全面启动,HarmonyOS NEXT 开发者预览版将在 2024 年第一季度面向开发者开放,移动开发的春天来了?

今天我们来体验下鸿蒙 OS 应用开发。

下载与安装 DevEco Studio

在 HarmonyOS 应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具 DevEco Studio 的下载与安装以及环境配置。

进入DevEco Studio 下载官网,单击“立即下载”进入下载页面。

DevEco Studio 提供了 Windows 版本和 Mac 版本选择,可以根据操作系统选择对应的版本进行下载。

这里以 Windows 为例进行安装。

下载完成后,双击下载的“deveco-studio-xxxx.exe”,进入 DevEco Studio 安装向导,在如下界面选择安装路径,默认安装于“C:\Program Files”下,也可以单击“Browse…”指定其他安装路径,然后单击“Next”。

如下安装选项界面勾选 DevEco Studio 后,单击“Next”,直至安装完成。

安装完成后,单击“Finish”完成安装。

配置环境

双击已安装的 DevEco Studio 快捷方式进入配置页面,IDE 会进入配置向导,选择 Agree,同意相应的条款,进入配置页。

进入 DevEco Studio 配置页面,首先需要进行基础配置,包括 Node.js 与 Ohpm 的安装路径设置,选择从华为镜像下载至合适的路径。

单击’Next’进入 SDK 配置,设置为合适的路径,

点击’Next’后会显示’SDK License Agreement’,阅读相关协议后,勾选’Accept’。

单击‘Next’进入配置预览页,在这里进行配置项的确认。

确认完成后,单击’Next’,进入下一步。

等待配置自动下载完成,完成后,单击’Finish’,IDE 会进入欢迎页,我们也就成功配置好了开发环境。

准备工作完成后,接下来将进入 DevEco Studio 进行工程创建和运行。

创建项目

如果你是首次打开 DevEco Studio,那么首先会进入欢迎页。

在欢迎页中单击 Create Project,进入项目创建页面。

选择‘Application’,然后选择‘Empty Ability’,单击‘Next’进入工程配置页。

配置页中,详细信息如下:

  • Project name 是开发者可以自行设置的项目名称,这里根据自己选择修改为自己项目名称。
  • Bundle name 是包名称,默认情况下应用 ID 也会使用该名称,应用发布时对应的 ID 需要保持一致。
  • Save location 为工程保存路径,建议用户自行设置相应位置。
  • Compile SDK 是编译的 API 版本,这里默认选择 API9。
  • Model 选择 Stage 模型,其他保持默认即可。

然后单击“Finish”完成工程创建,等待工程同步完成。

认识 DevEco Studio 界面

进入 IDE 后,我们首先了解一下基础的界面。整个 IDE 的界面大致上可以分为四个部分,分别是代码编辑区、通知栏、工程目录区以及预览区。

  1. 代码编辑区

    中间的是代码编辑区,你可以在这里修改你的代码,以及切换显示的文件。通过按住 Ctrl 加鼠标滚轮,可以实现界面的放大与缩小。

  2. 通知栏

    在编辑器底部有一行工具栏,主要介绍常用信息栏,其中 Run 是项目运行时的信息栏,Problems 是当前工程错误与提醒信息栏,Terminal 是命令行终端,在这里执行命令行操作,PreviewerLog 是预览器日志输出栏,Log 是模拟器和真机运行时的日志输出栏。在后续使用中会陆续接触。

  3. 工程目录区

    左侧为工程目录区,后续章节会详细介绍。

  4. 预览区

    单击右上角 Previewer,可以预览相应的文件 UI 展示效果。

    预览器提供了一些基本功能,包括旋转屏幕,切换显示设备及多设备预览等。单击旋转按钮,可以切换竖屏和横屏显示的效果。

    也可以单击如下列表按钮,切换显示的设备类型。弹出框内会显示 Available Profiles,即可用的设备类型。

    如单击 Foldable 切换设备,也可以单击旋转按钮切换 Foldable 的横竖屏显示模式。

    打开 Muti-profile preview 开关,可以实现多个尺寸设备的实时预览。

    单击预览器右上角组件预览按钮,可以进入组件预览界面。

    组件预览模式可以预览当前组件对应的代码块。

    点击相应组件,代码文件中会框选对应的组件代码部分,下方则对应当前组件的基本属性。

运行 Hello World

IDE 提供了本地模拟器供开发者使用,我们首先需要下载安装本地模拟器,然后进行运行工程。

  1. 单击顶部工具栏 Tools>Device Manager。

  2. 选择 Local Emulator,设置合适的 Local Emulator Location 存储地址,然后单击’+New Emulator’。

    选择 Huawei_Phone 手机模拟器,单击’Next’,进入模拟器系统下载页。

    选择下载 api9 的系统镜像,然后单击’Next’,等待下载完成。

    下载完成后,进行创建相应的手机模拟器,单击 Finish 完成创建。

    下载完成后,在 Local Emulator 页面中会出现创建的手机模拟器,点击 Actions 按钮,就能够启动模拟器。

    模拟器启动后,点击上方启动按钮,将 Hello World 工程运行到模拟器上。

    IDE 构建完成后,即可在模拟器上看到运行效果,我们也就完成了 Hello World 工程在模拟器上的运行。

了解基本工程目录

工程级目录

工程的目录结构如下。

其中详细如下:

  • AppScope 中存放应用全局所需要的资源文件。
  • entry 是应用的主模块,存放 HarmonyOS 应用的代码、资源等。
  • oh_modules 是工程的依赖包,存放工程依赖的源文件。
  • build-profile.json5 是工程级配置信息,包括签名、产品配置等。
  • hvigorfile.ts 是工程级编译构建任务脚本,hvigor 是基于任务管理机制实现的一款全新的自动化构建工具,主要提供任务注册编排,工程模型管理、配置管理等核心能力。
  • oh-package.json5 是工程级依赖配置文件,用于记录引入包的配置信息。

在 AppScope,其中有 resources 文件夹和配置文件 app.json5。AppScope>resources>base 中包含 element 和 media 两个文件夹,

  • 其中 element 文件夹主要存放公共的字符串、布局文件等资源。
  • media 存放全局公共的多媒体资源文件。

模块级目录

entry>src 目录中主要包含总的 main 文件夹,单元测试目录 ohosTest,以及模块级的配置文件。

  • main 文件夹中,ets 文件夹用于存放 ets 代码,resources 文件存放模块内的多媒体及布局文件等,module.json5 文件为模块的配置文件。
  • ohosTest 是单元测试目录。
  • build-profile.json5 是模块级配置信息,包括编译构建配置项。
  • hvigorfile.ts 文件是模块级构建脚本。
  • oh-package.json5 是模块级依赖配置信息文件。

进入 src>main>ets 目录中,其分为 entryability、pages 两个文件夹。

  • entryability 存放 ability 文件,用于当前 ability 应用逻辑和生命周期管理。
  • pages 存放 UI 界面相关代码文件,初始会生成一个 Index 页面。

resources 目录下存放模块公共的多媒体、字符串及布局文件等资源,分别存放在 element、media 文件夹中。

app.json5

AppScope>app.json5 是应用的全局的配置文件,用于存放应用公共的配置信息。

其中配置信息如下:

  • bundleName 是包名。
  • vendor 是应用程序供应商。
  • versionCode 是用于区分应用版本。
  • versionName 是版本号。
  • icon 对应于应用的显示图标。
  • label 是应用名。

module.json5

entry>src>main>module.json5 是模块的配置文件,包含当前模块的配置信息。

其中 module 对应的是模块的配置信息,一个模块对应一个打包后的 hap 包,hap 包全称是 HarmonyOS Ability Package,其中包含了 ability、第三方库、资源和配置文件。其具体属性及其描述可以参照下表 1。

属性描述
name该标签标识当前 module 的名字,module 打包成 hap 后,表示 hap 的名称,标签值采用字符串表示(最大长度 31 个字节),该名称在整个应用要唯一。
type表示模块的类型,类型有三种,分别是 entry、feature 和 har。
srcEntry当前模块的入口文件路径。
description当前模块的描述信息。
mainElement该标签标识 hap 的入口 ability 名称或者 extension 名称。只有配置为 mainElement 的 ability 或者 extension 才允许在服务中心露出。
deviceTypes该标签标识 hap 可以运行在哪类设备上,标签值采用字符串数组的表示。
deliveryWithInstall标识当前 Module 是否在用户主动安装的时候安装,表示该 Module 对应的 HAP 是否跟随应用一起安装。- true:主动安装时安装。- false:主动安装时不安装。
installationFree标识当前 Module 是否支持免安装特性。- true:表示支持免安装特性,且符合免安装约束。- false:表示不支持免安装特性。
pages对应的是 main_pages.json 文件,用于配置 ability 中用到的 page 信息。
abilities是一个数组,存放当前模块中所有的 ability 元能力的配置信息,其中可以有多个 ability。

对于 abilities 中每一个 ability 的属性项,其描述信息如下表 2。

属性描述
name该标签标识当前 ability 的逻辑名,该名称在整个应用要唯一,标签值采用字符串表示(最大长度 127 个字节)。
srcEntryability 的入口代码路径。
descriptionability 的描述信息。
iconability 的图标。该标签标识 ability 图标,标签值为资源文件的索引。该标签可缺省,缺省值为空。如果 ability 被配置为 MainElement,该标签必须配置。
labelability 的标签名。
startWindowIcon启动页面的图标。
startWindowBackground启动页面的背景色。
visibleability 是否可以被其他应用程序调用,true 表示可以被其它应用调用, false 表示不可以被其它应用调用。
skills标识能够接收的意图的 action 值的集合,取值通常为系统预定义的 action 值,也允许自定义。
entities标识能够接收的 Want 的 Action 值的集合,取值通常为系统预定义的 action 值,也允许自定义。
actions标识能够接收 Want 的 Entity 值的集合。

main_pages.json

src/main/resources/base/profile/main_pages.json 文件保存的是页面 page 的路径配置信息,所有需要进行路由跳转的 page 页面都要在这里进行配置。

总结

本文纯初体验鸿蒙操作应用开发,基于开发者平台提供的 IDE、鸿蒙生态的开发语言 ArkTS,通过模拟器运行起来了鸿蒙 OS 版 HelloWorld。对于已经有移动开发经验的同学来说上手可以说非常快,官方文档也非常详尽,ArkTS 语法也非常简洁易学,如果大家对华为生态的应用开发感兴趣或者想深入学习借鉴华为做 OS 和物联网的思路,可以行动起来了。

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

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

相关文章

WebGL开发三维解剖学应用

开发基于 WebGL 的三维解剖学应用通常涉及以下步骤。这些步骤包括创建三维模型、整合交互性、优化性能等,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.三维模型创建: 首先&#xff0…

智能优化算法应用:基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.白冠鸡算法4.实验参数设定5.算法结果6.参考文…

vue proxy代理 和 Nginx 配置跨域

vue.config.js文件中配置的代理: devServer: {port: 9095,// open: true, // 配置项目在启动时自动在浏览器打开proxy: {/yh: { // /api是代理标识,一般是每个接口前的相同部分target: "http://192.168.5.58:8002", // 请求地址,一…

4.3【共享源】克隆实战开发之截屏(一)

一,Screen截屏介绍 Screen的截屏是指从源读取像素,然后复制到缓冲区。然后可以根据需要操纵缓冲区;它可以简单地写入文件,也可以在其他窗口或显示器中使用。 Screen API从源中读取像素,并将其复制到提供的缓冲区中以捕获截屏。缓冲区可以是pixmap或窗口缓冲区,但必须设…

众和策略:美股全线上涨 中概股大涨

当地时间12月21日,欧洲股市全线下跌,英国富时100指数、法国CAC40指数、德国DAX指数均小幅下跌。美国通胀降温,美股商场三大指数尾盘飙升,纳斯达克指数、标普500指数均涨逾1%,大型科技股多数上涨,特斯拉涨近…

SoapUI、Jmeter、Postman三种接口测试工具的比较分析!

前段时间忙于接口测试,也看了几款接口测试工具,简单从几个角度做了个比较,拿出来与诸位分享一下。本文从多个方面对接口测试的三款常用工具进行比较分析,以便于在特定的情况下选择最合适的工具,或者使用自己编写的工具…

React + valtio 响应式状态管理

Valtio 是一个很轻量级的响应式状态管理库。valtio 让数据管理在 React 和原生 JS (Vanilla) 中变得更加简单的一个库,它类似于 Vue 的数据驱动视图的理念,使用外部状态代理去驱动 React 视图来更新。 一、状态管理库 dispatch 流派(单向数据流-中心化管…

Flink 运行时[Runtime] 整体架构

一、基本组件栈 在Flink整个软件架构体系中,同样遵循着分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富且友好的接口。从下图中可以看出整个Flink的架构体系基本上可以分为三层,由上往下依次是 …

MT6739/MTK6739安卓核心板规格参数_MTK平台核心板定制

安卓核心板采用联发科 MT6739 平台开发设计,搭载开放的智能 Android 操作系统。它集成 GPU PowerVR GE8100 570MHz,集成了 BASEBAND、UMCP、PMU 等核心器件,支持 2.4G5G 双频 WIFI(可支持 1*1 MIMO)、BLUETOOTH 近距离无线传输技术&#xff0…

绩效面谈-大公司提高绩效的必杀技

绩效面谈是一种人力资源管理工具,旨在评估员工绩效并为其提供反馈。其意义包括: 为提高绩效制定具体的目标和计划。通过与员工讨论绩效表现,管理人员和员工可以确定明确的目标和方向,以实现更高的绩效水平。 帮助员工理解工作环…

【组合数学】Pólya 计数理论

目录 1. 引言2. 置换群3. Burnside 引理共轭类k 不动置换类Burnside 引理 4. Plya 计数定理4.1 对点着色问题4.2 对面着色问题4.3 重复球放盒子 1. 引言 Plya 计数理论是数学中的一个分支,主要研究的是对称性在组合计数问题中的应用。该理论以匈牙利数学家乔治波利…

关于使用libnet时性能下降的问题分析

Libnet是一个用于构建和注入网络数据包的便携式框架。它提供了在IP层和链路层创建数据包的功能,以及一系列辅助和补充功能。Libnet非常适合编写网络工具和网络测试代码。一些使用libnet的项目包括arping、ettercap、ipguard、isic、nemesis、packit、tcptraceroute和…

服务器加装了14T硬盘,显示不出来,戴尔R730阵列卡配置阵列RAID0

戴尔H730阵列卡配置阵列RAID0,1,5,10_哔哩哔哩_bilibili 然后依据下面的视频进行操作,ctrlr,选raid0 戴尔H730阵列卡配置阵列RAID0,1,5,10_哔哩哔哩_bilibili

【项目问题解决】% sql注入问题

目录 【项目问题解决】% sql注入问题 1.问题描述2.问题原因3.解决思路4.解决方案1.前端限制传入特殊字符2.后端拦截特殊字符-正则表达式3.后端拦截特殊字符-拦截器 5.总结6.参考 文章所属专区 项目问题解决 1.问题描述 在处理接口入参的一些sql注入问题,虽然通过M…

《Python Advanced Programming + Design Patterns + Clean Code》

清洁代码 — 学习如何编写可读、可理解且可维护的代码 高级Python编程知识 Python之常用设计模式 Advanced Programming装饰器 decorators生成器 & 迭代器with 上下文管理器面向对象Mixin 模式反射机制并发编程 Design Patterns设计模式分类简单工厂模式工厂模式 √抽象工厂…

2024年软件测试工程师如何从功能测试转成自动化测试?

前言 接触了太多测试同行&#xff0c;由于多数同行之前一直做手工测试&#xff0c;现在很迫切希望做[<u>自动化测试</u>](javascript:;)&#xff0c;其中不乏工作5年以上的同行。 从事软件自动化测试已经近十年&#xff0c;接触过底层服务端、API 、Web、APP、H5…

【lesson20】MySQL复合查询(1)基本查询回顾、多表查询和自连接

文章目录 基本查询回顾建表插入数据实例 多表查询建表插入数据实例 自连接建表插入数据实例 基本查询回顾 建表 插入数据 实例 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行降…

自动化测试工具-Selenium:WebDriver的API/方法使用全解

我们上一篇文章介绍了Selenium的三大组件&#xff0c;其中介绍了WebDriver是最重要的组件。在这里&#xff0c;我们将看到WebDriver常用的API/方法&#xff08;注&#xff1a;这里使用Python语言来进行演示&#xff09;。 1. WebDriver创建 打开VSCode&#xff0c;我们首先引…

亚马逊关键词收录逻辑是什么?亚马逊关键词收录规则——站斧浏览器

亚马逊关键词收录逻辑是什么&#xff1f; 亚马逊收录系统是静态相关性和动态相关性的结合&#xff0c;也就是listing埋词与广告或其他非常规手段的干预。发生顺序及逻辑如下&#xff1a; 第一步&#xff1a;亚马逊首先会进行静态收录。通过SEO搜索引擎来识别卖家的产品链接&a…

《每天一分钟学习C语言·六》

1、 1字节&#xff08;Byte&#xff09;8位&#xff0c;1KB1024字节&#xff0c;1M1024KB&#xff0c;1G1024MB 2、 char ch A; printf(“ch %d\n”, ch);ch为65 这里是ASCII码转换 3、 scanf("%d", &i); //一般scanf直接加输入控制符 scanf("m%d&qu…