【华为鸿蒙系统学习】- 如何利用鸿蒙系统进行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);
        }
    }
}

运行结果:

Root
  Child 1
    Grandchild 1
  Child 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

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

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

相关文章

HarmonyOS 点击物理返回键再按一次退出系统(eTS)

&#xff08;1&#xff09;首先&#xff0c;定义一个变量&#xff0c;用于计算用户两次按下返回键的时间差&#xff1a; //todo 定义全局变量State exitTime: number 0;&#xff08;2&#xff09;然后就是一个捕捉用户按下返回键的事件&#xff1a; //todo 定义全局变量State …

计算球的体积 C语言xdoj89

题目描述&#xff1a;输入球的半径&#xff0c;计算并输出球的体积,假定pi3.14&#xff0c;结果保留两位小数。 输入格式&#xff1a;共一行&#xff0c;输入球体半径&#xff0c;两位小数。 输出格式&#xff1a;共一行&#xff0c;输出球体体积&#xff0c;结果保留两位小数。…

SecureCRT连接vmware虚拟机的centos系统配置

软件版本&#xff1a;VMware10.0.3&#xff0c;centos 7&#xff0c;securecrt 8.7.2 1&#xff0c;虚拟网络编辑器选择桥接模式&#xff0c; 2&#xff0c;如果不小心删除网络&#xff0c;centos关机状态下&#xff0c;选择恢复默认设置。 3&#xff0c;进入linux系统&#…

基于ssm重庆理工大学心理咨询管理子系统的分析与实现论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;心理咨询预约信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能…

Arduino开发实例-APDS-9930环境光和趋近传感器驱动

APDS-9930环境光和趋近传感器驱动 文章目录 APDS-9930环境光和趋近传感器驱动1、APDS-9930介绍2、硬件准备及接线3、驱动实现1、APDS-9930介绍 APDS-9930模块由环境光、红外线和接近传感器组成。 检测距离可达 100 毫米。 APDS-9930 传感器测量环境光。 该传感器还可以在黑暗中…

深入理解qs库:简化你的工作流程

前言 在 vue 开发中&#xff0c;处理 url 查询字符串是一个常见的任务。qs 库是一个流行的工具&#xff0c;可以帮助我们轻松地处理 url 查询字符串的编码和解码。本文将介绍 qs 库的基本用法&#xff0c;并结合实例演示帮助你更好地理解和应用这个实用的工具。 一、qs 是什么&…

基于SSM的文化线上体验馆(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的文化线上体验馆(有报告)。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc MybatisVueLayu…

字符设备驱动开发-注册-设备文件创建

一、字符设备驱动 linux系统中一切皆文件 1、应用层&#xff1a; APP1 APP2 ... fd open("led驱动的文件"&#xff0c;O_RDWR); read(fd); write(); close(); 2、内核层&#xff1a; 对灯写一个驱动 led_driver.c driver_open(); driver_read(); driver_write(…

09、基于LunarLander登陆器的Dueling DQN强化学习(含PYTHON工程)

09、基于LunarLander登陆器的Dueling DQN强化学习&#xff08;含PYTHON工程&#xff09; 参考&#xff1a; 论文地址&#xff1a;https://proceedings.mlr.press/v48/wangf16.pdf LunarLander复现&#xff1a; 07、基于LunarLander登陆器的DQN强化学习案例&#xff08;含PYT…

Java之ArrayList源码解读

ArrayList源码解读 ArrayList ArrayList 的底层是数组队列&#xff0c;相当于动态数组。与 Java 中的数组相比&#xff0c;它的容量能动态增长。在添加大量元素前&#xff0c;应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。…

SwiftUI 趣谈之:绝不可能(Never)的 View!

概览 SwiftUI 的出现极大的解放了秃头码农们的生产力。SwiftUI 中众多原生和自定义视图对于我们创建精彩撩人的 App 功不可没&#xff01; 不过&#xff0c;倘若小伙伴们略微留意过 SwiftUI 框架头文件里的源代码&#xff0c;就会发现里面嵌有一些奇怪 Never 类型&#xff0c…

Unity中Shader旋转矩阵(二维旋转矩阵)

文章目录 前言一、旋转矩阵的原理1、我们以原点为中心&#xff0c;旋转坐标轴θ度2、求 P~2x~&#xff1a;3、求P~2y~:4、最后得到 P~2~点 的点阵5、该点阵可以拆分为以下两个矩阵相乘的结果 二、在Shader中&#xff0c;使用该旋转矩阵实现围绕 z 轴旋转1、在属性面板定义 floa…

信号与线性系统翻转课堂笔记8——周期信号的频谱

信号与线性系统翻转课堂笔记8——周期性信号的频谱 The Flipped Classroom8 of Signals and Linear Systems 对应教材&#xff1a;《信号与线性系统分析&#xff08;第五版&#xff09;》高等教育出版社&#xff0c;吴大正著 一、要点 &#xff08;1&#xff0c;重点&#…

nodejs+vue+微信小程序+python+PHP基于推荐算法的电影推荐系统-计算机毕业设计推荐django

信息数据的处理完全依赖人工进行操作&#xff0c;会耗费大量的人工成本&#xff0c;特别是面对大量的数据信息时&#xff0c;传统人工操作不仅不能对数据的出错率进行保证&#xff0c;还容易出现各种信息资源的低利用率与低安全性问题。更有甚者&#xff0c; 另一方面可以确保信…

系列八、VMWare无法启动CentOS7问题排查 解决

一、VMWare无法启动CentOS7 1.1、问题描述 今天在测试代码的时候&#xff0c;需要用到Linux&#xff0c;然后就打开VMWare进行启动&#xff0c;但是启动的时候发现无法启动起来&#xff0c;报了一个如下的错误&#xff1a; 出现了问题那就要解决问题&#xff0c;然后想起来前几…

【设计模式】命令模式

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、什么是命令模式&#xff1f; 二、命令模式的优点和应用场景 三、命令模式的要素和实现 3.1 命令 3.2 具体命令 3.3 接受者 …

Flink快速部署集群,体验炸了!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

反序列化版本漏洞

laravel5.7反序列化漏洞 <?phpnamespace Illuminate\Foundation\Testing {class PendingCommand{public $test;protected $app;protected $command;protected $parameters;public function __construct($test, $app, $command, $parameters){$this->test $test; …

【MVT_1703230471】基于Python NLTK分词、词云、LDA主题分类及GPT情感分类

【Talk is cheap】 1 数据探索 case idcase outcome case title case text 0 Case1 cited Alpine Hardwood (Aust) Pty Ltd v Hardys Pty Lt... Ordinarily that discretion will be exercised s... 1 Case2 cited Black v Lipovac [1998] FCA 699 ; (1998) 217 AL... The gen…

tsconfig.app.json文件报红:Option ‘importsNotUsedAsValues‘ is deprecated...

在创建vue3 vite ts项目时的 tsconfig.json&#xff08;或者tsconfig.app.json&#xff09; 配置文件经常会报一个这样的错误&#xff1a; 爆红&#xff1a; Option ‘importsNotUsedAsValues’ is deprecated and will stop functioning in TypeScript 5.5. Specify compi…