【华为鸿蒙系统学习】- 如何利用鸿蒙系统进行App项目开发|自学篇

21dd41dce63a4f2da07b9d879ad0120b.png

🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:
"没有罗马,那就自己创造罗马~"


目录

创建鸿蒙第一个App项目 

项目创建

工程目录区

 预览区

运行Hello World

基本工程目录 

 ws:工程级别目录

entry:模块级别目录 

app.json5

module.json5

 main_pages.json

错误总结:

Previewer预览虚拟机构建失败问题

 鸿蒙虚拟机黑屏问题


fb38de373bb44a09a7a440ebc58eb423.gif#pic_center

 创建鸿蒙第一个App项目 

项目创建

首先,创建一个项目。 

b6438c04114541ea8f3ad2615ebdcd41.png

然后我们选择创建应用 

Ability:表示功能的抽象,根据你所需要功能进行选着性开发。

2c2282e9fc3149499d9bf08b4ce5ee04.png

第一次开发,我们选择Empty Ability,图中表示它可与手机,平板,手表,电脑,汽车进行互联,

然后点击next进行下一步操作。

891f9b6dbefc49b98eeb3f4872c55dd9.png

进行项目名,包名的修改,然后存储位置改为之前的D盘。

e2bd06c2443d41df81dce4778133cfb5.png

 在原路径创建一个新的文件ws去保存项目,并选择Stage开发模式(面向对象开发模式)。

913ba3b6324e4ce4a9a85bcd7dbb8b13.png


f38eab496ae6412dba4e4dccbb36c588.png DevEco Studio 还支持低代码开发模式(不写代码,自动生成的组件可以随意拖拽)

初学者 - “应知其然·而知其所以然” ,所以最好就不勾选

然后,点击next,系统就开始构建我们的项目


工程目录区

cda0cab930014896b44c32c5d3d35bca.png

327dc60580be4aa48afdaa037b61299b.png


 预览区

打开 Previewer 预览虚拟机,还可以选择其它类型的设备进行预览。

 ecd41a9bb36047dbb24e0b32ed820978.png8cddcf77ae594fa298b077a6d7a048c6.png

47435fcad8a345ee8f3adb196b8db90e.png 根据代码我们可以知道代码和我们的组件关系是一一对应的,他们的关系都是层级式的。


运行Hello World

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

(1) 单击顶部Tools ---> Device Manager

4efadf1e814c451b8638b99bb5104ddb.png

 (2)选择鸿蒙模拟器并安装所有设备 --- 这里安装的是模拟器的管理工具

711b6a7138bf4fee910ee5671ddf9b9e.png

安装好以后,点击Finish 。

7599be30e3c845db9b1e50c2291360a5.png (3)然后将其放到原来D盘Huawei文件下保存8b4222e24d6043e78053b7e6979c4e4c.png

(4)然后再new一个模拟器。 

1cdb57cad1ad44ea906c425181a54d01.png (5)选择华为手机,然后点击next

1549b1e86a5845f2bfad6b28def873a3.png

(6)点击download进行华为模拟器的下载

6fa3a985c50641c29b1bdc112a88c666.png 安装完毕以后,点击Finishf39b274d663846c1a6c3c4a7c56db577.png

下载完以后,显示SDK版本为: 3.1 , API :  9 

1a599e32d8ab4ab69a5754b5479392e8.png

(7)确认安装英特尔的硬件加速器

a087feb7bea94564bed79414cac59a76.png

17b3281e59804159a4bda3b3ad55d4b2.png

b7d814a403624604b0a2820641aeafd5.png

 (8)等待1min,虚拟机就会自动开机,下面展示的是正在开机的页面。

6a625d66dd7e4206b978bbac4c1910b6.png

下面是开机完成的页面 

1fee6c8d04124e37957b4f76dc43aa59.png

 (9)点击右上角的绿色开始按钮,虚拟机就会自动运行手机上的应用程序,如下图所示。

9c681ad8e51e46c490b11361c94ee138.png也可以通过快捷键访问应用。75d1015c93744326b298ddc04215b265.gif


基本工程目录 

 ws:工程级别目录 

086233b4dc294951b07fdd1f8f07bd55.png

工程级别目录下

. 开头的:构建和发布有关
AppScope:全局资源共享目录
entry:✍🏻源代码的地方
hvigor:储存前端构建配置文件信息基于TS的前端构建和任务编排
oh_modules:开放鸿蒙,存放所有项目用的第三方包
.gitignore:代码版本管理文件夹,用于代码提交或代码忽略除外的文件
build-profile.json5:配置或修改模块名称
.ts:全称是test script,是执行编译和构建任务的一个脚本
有.bat的文件hvigorw.bat:Windows操作系统底下执行的脚本
没有.bat的文件bvigorw:Linux或Unix操作系统中做ohpm的编译管理
.properties:配置文件的属性
oh-package.json5:包含依赖的配置,项目配置,以及(第三方包)依赖关系
oh-package-lock.json5:树型依赖数,包含项目配置信息

树形依赖数一种树形结构,用于表示依赖关系。在树形依赖数中,每个节点代表一个对象或实体节点之间的连接表示对象之间的依赖关系。树形依赖数通常用于描述复杂的层次结构或组织关系,例如文件系统、组织结构等。

96a713f493b0461dbe7720a123bee51f.png

在给定的引用中,有两个类用于表示树形依赖数。

TreeVo类表示树形依赖数的节点,包含节点的id、name和子节点列表。

TreeNode类表示树形依赖数的节点,包含节点的id、parentId、子节点列表和是否有子节点的标志。

以下是一个示例,演示如何使用TreeVo和TreeNode类构建树形依赖数:

// 创建树形依赖数的节点
TreeVo root = new TreeVo(1, "Root");
TreeVo child1 = new TreeVo(2, "Child 1");
TreeVo child2 = new TreeVo(3, "Child 2");
TreeVo grandchild1 = new TreeVo(4, "Grandchild 1");// 构建树形依赖数的结构
root.setNodeList(Arrays.asList(child1, child2));
child1.setNodeList(Collections.singletonList(grandchild1));// 打印树形依赖数的结构
printTree(root, 0);// 递归打印树形依赖数的结构
private static void printTree(TreeVo node, int level) {StringBuilder indent = new StringBuilder();for (int i = 0; i < level; i++) {indent.append("  ");}System.out.println(indent.toString() + node.getName());if (node.getNodeList() != null) {for (TreeVo child : node.getNodeList()) {printTree(child, level + 1);}}
}

运行结果:

RootChild 1Grandchild 1Child 2

entry:模块级别目录 

fcc286629f0149aa8bb48b4155dfb9be.png

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

main文件夹中:

ets文件夹:存放ets代码.

resources文件:存放模块内的多媒体及布局文件等,module.json5文件:为模块的配置文件。

ohosTest:单元测试目录。build-profile.json5:模块级配置信息,包括编译构建配置项。

hvigorfile.ts文件:模块级构建脚本。

oh-package.json5:模块级依赖配置信息文件

4fd1425c710947ab8c2a444e846d5b3f.png进入src>main>ets目录中,其分为entryability、pages两个文件夹。Entryability:存放ability文件,用于当前ability应用逻辑和生命周期管理。

Pages:存放UI界面相关代码文件,初始会生成一个Index页面。

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


app.json5

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

315036c6dc8749a1aaee007fc9af30fe.png

其中配置信息如下:bundleNam:包名。

vendor:应用程序供应商。versionCode:用于区分应用版本。

versionName:版本号。


module.json5

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

3a7459ed9c2c47f0acb0d0be808f804f.png

其中module:对应模块的配置信息,一个模块对应一个打包后的hap包,hap包全称是HarmonyOS Ability Package,其中包含了ability、第三方库、资源和配置文件。

其具体属性及其描述可以参照下表1。

表1module.json5默认配置属性及描述

820ff08c408a4acbb43d803ed6e41b10.png

 

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

表2 abilities中对象的默认配置属性及描述

15754d25d95a451988b9e6de3b759517.png

8be3c2b46cd346dca4dd8ef56ba36050.png


 main_pages.json

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

220eeb743caf4b529fc2351d3078fd7d.png


📝错误总结:

Previewer预览虚拟机构建失败问题

preview log 显示: 

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

具体解决方法是:

打开设置 ---> 构建,执行,部署 ---> Hvigor ---> 关掉最下面构建守护进程模式

5771279f271442f99836b371f5c822e9.png

↓虚拟机正常界面 

d1c3da07c5214617b04e690f1a68e00d.png


 鸿蒙虚拟机黑屏问题

ee7349ad5df14a1c857446b2f58822a9.png

虚拟机黑屏问题可能由多种因素引起,包括资源限制、应用程序冲突、兼容性问题和软件错误。

我遇到的的是内存分配不足问题解决这种问题的方法是给虚拟机分配足够的内存,如何知道虚拟机需要多少内存,可以通过官网进行查找,然后要注意分配空间电脑内存是否足以提供。 

0ee6c4ec414740b0a0404c5161cdadc7.gif

cc002cbd5c414c5393e19c5e0a0dbf20.gif#pic_center

 

 

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

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

相关文章

[node]Node.js 模块系统

[node]模块系统 Node.js中的模块系统模块的使用模块的导入模块的导出导出多个值导出默认值导出可传参的函数 文件查找策略从文件模块缓存中加载从原生模块加载从文件加载 Node.js中的模块系统 为了让Node.js的文件可以相互调用&#xff0c;Node.js提供了一个简单的模块系统。 …

docker容器内 获取宿主机ip

可以使用命令 --add-host jargatewayip:192.168.0.47 \ 需要注意,这里不能是 127.0.0.1 ,所以要找到服务器局域网的ip 命令示例 docker run -it \-p 80:80 \-p 443:443 \--name nginx \--network app --hostname nginx \-e TZAsia/Shanghai \--add-host jargatewayip:192.16…

modbus异常错误码说明

异常错误码说明 其中物理离散量输入和输入寄存器只能有I/O系统提供的数据类型&#xff0c;即只能是由I/O系统改变离散量输入和输入寄存器的数值&#xff0c;而上位机程序不能改变的数据类型&#xff0c;在数据读写上表现为只读&#xff0c;而内部比特或者物理线圈和内部寄存器或…

图灵日记之java奇妙历险记--数据类型与变量运算符

目录 数据类型与变量字面常量数据类型变量语法格式整型变量浮点型变量字符型变量希尔型变量类型转换自动类型转换(隐式)强制类型转换(显式) 类型提升不同数据类型的运算小于4字节数据类型的运算 字符串类型 运算符算术运算符关系运算符逻辑运算符逻辑与&&逻辑或||逻辑非…

蚂蚁集团5大开源项目获开放原子 “2023快速成长开源项目”

12月16日&#xff0c;在开放原子开源基金会主办的“2023开放原子开发者大会”上&#xff0c;蚂蚁集团主导开源的图数据库TuGraph、时序数据库CeresDB、隐私计算框架隐语SecretFlow、前端框架OpenSumi、数据域大模型开源框架DB-GPT入选“2023快速成长开源项目”。 &#xff08;图…

MySQL数据库 视图

目录 视图概述 语法 检查选项 视图的更新 视图作用 案例 视图概述 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存…

React学习计划-React16--React基础(四)生命周期和diffing算法,key的作用

1. 生命周期 1. 声命周期的三个阶段&#xff08;旧&#xff09; 初始化阶段&#xff1a;由ReactDOM.render()触发—初次渲染 1. constructor() 2. componentWillMount() 3. render() 4. componentDidMount() > 常用一般在这个钩子中做一些初始化的事情&#xff0c;例如&am…

SpringBoot Elasticsearch全文搜索

文章目录 概念全文搜索相关技术Elasticsearch概念近实时索引类型文档分片(Shard)和副本(Replica) 下载启用SpringBoot整合引入依赖创建文档类创建资源库测试文件初始化数据创建控制器 问题参考 概念 全文搜索&#xff08;检索&#xff09;&#xff0c;工作原理&#xff1a;计算…

数据结构和算法-二叉排序树(定义 查找 插入 删除 时间复杂度)

文章目录 二叉排序树总览二叉排序树的定义二叉排序树的查找二叉排序树的插入二叉排序树的构造二叉排序树的删除删除的是叶子节点删除的是只有左子树或者只有右子树的节点删除的是有左子树和右子树的节点 查找效率分析查找成功查找失败 小结 二叉排序树 总览 二叉排序树的定义 …

Pooling方法总结(语音识别)

Pooling layer将变长的frame-level features转换为一个定长的向量。 1. Statistics Pooling 链接&#xff1a;http://danielpovey.com/files/2017_interspeech_embeddings.pdf The default pooling method for x-vector is statistics pooling. The statistics pooling laye…

基于单片机设计的指纹锁(读取、录入、验证指纹)

一、前言 指纹识别技术是一种常见的生物识别技术&#xff0c;利用每个人指纹的唯一性进行身份认证。相比于传统的密码锁或者钥匙锁&#xff0c;指纹锁具有更高的安全性和便利性&#xff0c;以及防止钥匙丢失或密码泄露的优势。 基于单片机设计的指纹锁项目是利用STC89C52作为…

安全、高效的MySQL DDL解决方案

MySQL作为目前应用最广泛的开源关系型数据库&#xff0c;是许多网站、应用和商业产品的主要数据存储。在生产环境&#xff0c;线上数据库常常面临着持续的、不断变化的表结构修改&#xff08;DDL&#xff09;&#xff0c;如增加、更改、删除字段和索引等等。其中一些DDL操作在M…

HarmonyOS开发:超详细了解项目的工程结构

当我们熟练的掌握了DevEco Studio之后&#xff0c;就可以创建项目进行练习了&#xff0c;和市场上大多数IDE一样&#xff0c;DevEco Studio也给我们提供了很多的实例模板&#xff0c;当然了&#xff0c;对于大多数移动端开发者而言&#xff0c;这些模板和我们的UI设计有着很大的…

RTP/RTCP/RTSP/SIP/SDP/RTMP对比

RTP&#xff08;Real-time Transport Protocol&#xff09;是一种用于实时传输音频和视频数据的协议。它位于传输层和应用层之间&#xff0c;主要负责对媒体数据进行分包、传输和定时。 RTCP&#xff08;Real-Time Control Protocol&#xff09;是 RTP 的控制协议&#xff0c;…

Android 权限申请

在Android中&#xff0c;从Android 6.0&#xff08;API级别23&#xff09;开始&#xff0c;应用在运行时需要动态申请权限。以下是一些步骤来动态申请权限&#xff1a; 在应用的清单文件&#xff08;AndroidManifest.xml&#xff09;中声明需要的权限。例如&#xff0c;如果应…

Socket.D 基于消息的响应式应用层网络协议

首先根据 Socket.D 官网 的副标题&#xff0c;Socket.D 的自我定义是&#xff1a; 基于事件和语义消息流的网络应用协议。官网定义的特点是&#xff1a; 基于事件&#xff0c;每个消息都可事件路由所谓语义&#xff0c;通过元信息进行语义描述流关联性&#xff0c;有相关的消…

【湖仓一体尝试】MYSQL和HIVE数据联合查询

爬了两天大大小小的一堆坑&#xff0c;今天把一个简单的单机环境的流程走通了&#xff0c;记录一笔。 先来个完工环境照&#xff1a; mysqlhadoophiveflinkicebergtrino 得益于IBM OPENJ9的优化&#xff0c;完全启动后的内存占用&#xff1a; 1&#xff09;执行联合查询后的…

CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞

项目介绍 Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践&#xff0c;我们将任务部署和运行时参数提取到配置文件中。这样&#xff0c;带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…

Vue+ElementUI前端添加展开收起搜索框按钮

1、搜索框添加判断 v-if"advanced" <el-form-item label"创建日期" v-if"advanced"><el-date-pickerv-model"daterangeLedat"size"small"style"width: 240px"value-format"yyyy-MM-dd"type&q…

Midjourney v6 正式发布,AI创新工坊同步更新

Midjourney v6 开发团队将从2023 年 12 月 21 日今晚开始&#xff0c;在寒假期间让社区测试Midjourney v6模型的 alpha 版本。 要打开它&#xff0c;V6请从提示下方的下拉菜单中选择/settings或--v 6在提示后键入。 Midjourney v6 基本型号有哪些新功能&#xff1f; 更准确的…