鸿蒙:1.入门
概述
简介
鸿蒙操作系统(HarmonyOS)是华为公司发布的一款智能终端系统,是基于微内核的面向全场景的分布式操作系统。它致力于提供更加安全、高效、低延迟、低功耗的操作体验,可通过技术手段对应用程序和设备进行智能协同,并在用户界面、资源管理和功耗等方面进行优化。
发展历程
2012年,华为开始规划自有操作系统,并在芬兰赫尔辛基设立智能手机研发中心,招募相关技术人才。
2016年5月,华为消费者BG软件部开始立项研发分布式操作系统1.0版本。
2017年,鸿蒙内核1.0完成技术验证,软件部门继续立项研发2.0版本,并于次年研发出用于终端TEE的鸿蒙内核2.0。
2018年初,消费者软件部提出打造全场景时代的软件底座,把华为的系统装载到各种设备上,这一思路获得任正非认可。同年5月,自研分布式操作系统获得华为消费者BG投资,成为正式项目,同年8月24日,华为申请了“华为鸿蒙”商标,随后该系统被取名为“鸿蒙”。
2019年5月,美国对华为实施相关限制措施。同年6月,华为轮值董事长胡厚崑表示华为已采用包括鸿蒙操作系统在内的替代方案。同年8月9日,华为在开发者大会上发布EMUI 10的同时宣告了HarmonyOS 1.0的诞生,但此时鸿蒙系统只搭载在家用电器上,尚未应用于手机系统,其第一个落地产品是华为旗下荣耀的智慧屏。
2020年12月,华为发布HarmonyOS 2.0手机开发者Beta版本。
2021年5月18日,华为智能硬件生态品牌Works with HUAWEI HiLink 与 Powered by HarmonyOS全面升级为HarmonyOS Connect(鸿蒙智联)。同年5月25日,EMUI官博正式更名为HarmonyOS。6月2日,HarmonyOS 2.0正式发布,鸿蒙操作系统正式覆盖手机等移动终端。同年9月23日,HarmonyOS 2.0的用户数量超过1.2亿,成为全球增长最快的移动操作系统之一。
2022年7月,Harmony 3.0正式发布,“鸿蒙世界”的概念被首次提出。
2023年8月,Harmony 4.0正式发布。9月,全新鸿蒙HarmonyOS NEXT蓄势待发,鸿蒙原生应用全面启动。
2024年1月18日,HarmonyOS NEXT鸿蒙星河版面向开发者开放申请。截至2024年5月15日,鸿蒙生态设备数量超8亿台。2024年第一季度,华为鸿蒙HarmonyOS在中国市场首次超越苹果iOS,并成为中国第二大操作系统。
官方文档
HarmonyOS:3.1/4.0
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/1_1_u5feb_u901f_u5165_u95e8-0000001478340845-V2
HarmonyOS:NEXT
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5
搭建
安装node.js
简介
Node.js是一个免费、开源、跨平台的 JavaScript 运行时环境,它让开发人员能够创建服务器、Web 应用、命令行工具和脚本。
注意
鸿蒙要求:Node.js版本要求为v14.19.1及以上,且低于v17.0.0;对应的npm版本要求为6.14.16及以上
下载
官网下载:https://nodejs.org/en/ 历史版本下载:https://nodejs.org/dist/ 16.16.0LTS是目前比较稳定的版本,下载后直接无脑下一步即可 安装路径默认就行(C:\Program Files\nodejs\)
node.js官网https://nodejs.org/en/配置环境变量
系统path:C:\Program Files\nodejs\ 配置npm国内镜像
npm是Node的包管理工具【安装Nodejs时会附带】,npm仓库在国外,使用npm是可能下载失败
安装npm的国内镜像:npm install -g cnpm --registry=https://registry.npmmirror.com
配置国内淘宝镜像:npm config set registry https://registry.npm.taobao.org
查看配置的镜像是否成功: npm config get registry
查看nodejs版本
node -v
查看npm版本
npm -v
单独安装ohpm
简介
OHPM CLI 作为鸿蒙生态三方库的包管理工具,支持OpenHarmony共享包的发布、安装和依赖管理
文档
文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/ide-command-line-ohpm-0000001490235312-V2
下载
下载地址:https://developer.huawei.com/consumer/cn/deveco-studio/#download_cli
下载位置【【D:\A_harmonyOS\Autils\commandline-tools-windows-2.0.0.2】】
初始化
注意:初始化ohpm前,需先完成node.js环境变量配置
1.解压文件,进入commandline-tools-windows-2.0.0.2\command-line-tools\ohpm\bin
2.执行:init.bat
配置环境变量【用户和系统环境都配置】
OHPM_HOME:D:\A_harmonyOS\Autils\commandline-tools-windows-2.0.0.2\command-line-tools\ohpm
Path:%OHPM_HOME%\bin
检查版本
ohpm -v
HUAWEI DevEco Studio
简介
HUAWEI DevEco Studio是基于IntelliJ IDEA Community开源版本打造,为运行在HarmonyOS和OpenHarmony系统上的应用和服务提供一站式的开发平台。
特点
1.高效智能代码编辑:支持ArkTS、JS、C/C++等语言的代码高亮、代码智能补齐、
代码错误检查、代码自动跳转、代码格式化、代码查找等功能,提升代码编写效率。
2.低代码可视化开发:丰富的UI界面编辑能力,支持自由拖拽组件和可视化数据绑定,
可快速预览效果,所见即所得;同时支持卡片的零代码开发,降低开发门槛和提升界面开发效率。
3.多端双向实时预览:支持UI界面代码的双向预览、实时预览、动态预览、组件预览以及多端设备预览,便于快速查看代码运行效果。
4.多端设备模拟仿真:提供HarmonyOS本地模拟器,支持手机等设备的模拟仿真,便捷获取调试环境。
运行环境要求
操作系统:Windows10 64位、Windows11 64位
内存:8GB及以上
硬盘:100GB及以上
分辨率:1280*800像素及以上
文档
官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/deveco_overview-0000001053582387-V2
下载安装
下载地址:https://developer.huawei.com/consumer/cn/deveco-studio/
1.进入HUAWEI DevEco Studio产品页,单击下载列表右侧的下载按钮,下载DevEco Studio
2.选择安装路径,单击Browse指定其安装路径【默认C:\Program Files】
3.勾选DevEco Studio
配置开发环境【可单独安装node.js和ohpm】
1.安装Node.js与ohpm【Node.js版本要求为v14.19.1及以上,且低于v17.0.0;对应的npm版本要求为6.14.16及以上】
如果本地没有合适的版本,可以选择Install按钮【C:\Users\86150\nodejs】【C:\Users\86150\AppData\Local\Huawei\ohpm】
可能有做前端的同学是有Node.js的环境,由于版本和路径的原因,仍然建议单独安装
2.在SDK Setup界面,设置HarmonyOS SDK存储路径【C:\Users\86150\AppData\Local\Huawei\Sdk】
入门
创建第一个项目HelloWorld
创建一个新工程
1.打开DevEco Studio,在欢迎页单击Create Project,创建一个新工程
2.选择“Empty Ability”模板,填写工程相关信息,保持默认值即可
预览项目效果
在DevEco Studio右侧菜单栏,单击Previewer【如果项目过于复杂,则需要使用模拟器或者真机测试】
Previewer热更新
Previewer支持热更新,在修改代码之后,保存可以自动更新效果
创建模拟器
简介
Previewer预览项目,这种预览方式可以快速看到项目效果,但是如果项目过于复杂,则需要使用模拟器或者真机测试
安装
1.Tools > SDK,勾选System-image-phone进行下载【下载的项目比较大,等待时间较长】
2.Tools > Device Manager,创建模拟器
模拟器可以创建手表模拟器、电视模拟器和手机模拟器
在模拟器创建的高级设置中,可以配置模拟器的内存、存储空间和CPU等设置
内存分配根据自己的电脑需求配置,如果电脑内存小,可以适当调小内存,但是至少要保持4G
3.创建完成之后启动模拟器,点击Action启动即可
4.回到IDE中,选择手机模拟器,然后点击运行即可
启动
1.打开DevEco Studio,找到最上面Tools/Device Manager,进入页面启动即可
连接项目
注意:启动了会识别src/main/ets/pages/Index.ets的页面
工程目录结构
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:应用级编译构建任务脚本
代码初始结构
/*** 装饰器:用于装饰类、结构、方法以及变量,并赋予其特殊的含义。* @Entry:表示该自定义组件为入口组件,有这次才能启动项目* @Component:表示自定义组件* @State:表示组件中的状态变量,状态变量变化会触发UI刷新*/
@Entry
@Component/*** HarmonyOS是组件化开发* struct Index{}:自定义组件,可复用的UI单元,可组合其他组件*/
struct Index {@State message: string = 'Hello World'/*** UI描述* build(){}:以声明式的方式来描述UI的结构** https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-create-custom-components-0000001473537046-V2#section11509117338111.所有声明在build()函数的语言,我们统称为UI描述2.@Entry装饰的自定义组件,其build()函数下的根节点唯一且必要,且必须为容器组件,其中ForEach禁止作为根节点。3.@Component装饰的自定义组件,其build()函数下的根节点唯一且必要,可以为非容器组件,其中ForEach禁止作为根节点。*/build() {/*** 系统组件* Row/Column/Text:有ArkUI提供的组件* - 容器组件:用来完成布局,例如:Row/Column* - 基础组件:自带样式功能的页面元素,例如:Text*/Row() {Column() {Text(this.message)/*** 属性方法:设置组件的UI样式,方法比较多,后面在慢慢讲解*/.fontSize(50).fontWeight(FontWeight.Bold).fontColor(Color.Red)}.width('100%')}.height('100%')}
}
相关文章:

鸿蒙:1.入门
概述 简介 鸿蒙操作系统(HarmonyOS)是华为公司发布的一款智能终端系统,是基于微内核的面向全场景的分布式操作系统。它致力于提供更加安全、高效、低延迟、低功耗的操作体验,可通过技术手段对应用程序和设备进行智能协同…...

【matlab】智能优化算法——求解目标函数
智能优化算法在求解目标函数方面发挥着重要作用,它通过迭代、筛选等方法来寻找目标函数的最优值(极值)。以下是关于智能优化算法求解目标函数的详细介绍: 一、智能优化算法概述 智能优化算法是一种搜索算法,旨在通过…...

不改代码,实现web.config或app.config的连接字符串加密解密
目的:加密字符串,防止明文显示。 好处:不用修改代码,微软自带功能,自动解密。 web.config 参考相关文章: Walkthrough: Encrypting Configuration Information Using Protected Configuration | Microso…...

Python创建MySQL数据库
一、使用Docker部署本地MySQL数据库 docker run --restartalways -p 3307:3306 --name mysql -e MYSOL_ROOT_PASSWORDlms123456 -d mysql:8.0.25 参数解析: 用户名:root 密码:lms123456 端口:3307 二、在Pycharm开发工具中配置连接MySQL数据库 三、安装zdppy_mysql pip inst…...

【C++】unordered系列容器的封装
你很自由 充满了无限可能 这是很棒的事 我衷心祈祷你可以相信自己 无悔地燃烧自己的人生 -- 东野圭吾 《解忧杂货店》 unordered系列的封装 1 unordered_map 和 unordered_set2 改造哈希桶2.1 模版参数2.2 加入迭代器 3 上层封装3.1 unordered_set3.2 unordered_map 4 面…...

matlab 超越椭圆函数图像绘制
matlab 超越椭圆函数图像绘制 超越椭圆函数图像绘制xy交叉项引入斜线负向斜线成分正向斜线成分 x^2 y^2 xy 1 (负向)绘制结果 x^2 y^2 - xy 1 (正向)绘制结果 超越椭圆函数图像绘制 xy交叉项引入斜线 相对于标准圆…...
本地文件同步上传到Gitee远程仓库
1、打开我们的项目所在文件夹 2、在项目文件夹【鼠标右击】弹出菜单,在【鼠标右击】弹出的菜单中,点击【Git Bash Here】,弹出运行窗口(前提条件是已装好git环境) 3、在命令窗口中输入:git init 4、在 Gite…...
RESTful Web 服务详解
RESTful Web 服务是一种基于 Representational State Transfer (REST) 架构风格的 Web 服务,它利用 HTTP 协议来传输数据,支持多种数据格式如 JSON 和 XML。在 Spring 框架中,通过简单配置和注解可以轻松实现 RESTful Web 服务。在本文中&…...
【ARMv8/v9 GIC 系列 5.3 -- 系统寄存器对中断的处理】
请阅读【ARM GICv3/v4 实战学习 】 文章目录 ARMv8/v9系统寄存器对中断的控制Group 0中断的寄存器Group 1中断的寄存器安全状态与中断分组中断处理过程中断确认处理代码中断完成处理代码ARMv8/v9系统寄存器对中断的控制 在ARM GIC 体系结构中,中断分组通过一系列系统寄存器进…...

MUNIK解读ISO26262--系统架构
功能安全之系统阶段-系统架构 我们来浅析下功能安全系统阶段重要话题——“系统架构” 目录概览: 系统架构的作用系统架构类型系统架构层级的相关安全机制梳理 1.系统架构的作用 架构的思维包括抽象思维、分层思维、结构化思维和演化思维。通过将复杂系统分解…...

STM32第十五课:LCD屏幕及应用
文章目录 需求一、LCD显示屏二、全屏图片三、数据显示1.显示欢迎词2.显示温湿度3.显示当前时间 四、需求实现代码 需求 1.在LCD屏上显示一张全屏图片。 2.在LCD屏上显示当前时间,温度,湿度。 一、LCD显示屏 液晶显示器,简称 LCD(Liquid Cry…...

Java--继承
1.继承的本质是对某一批类的抽象,从而实现对世界更好的建模 2.extends的意思是“扩展”,子类是父亲的扩展 3.Java中只有单继承,没有多继承 4.继承关系的两个类,一个为子类(派生类),一个为父类…...

Github与本地仓库建立链接、Git命令(或使用Github桌面应用)
一、Git命令(不嫌麻烦可以使用Github桌面应用) git clone [] cd [] git branch -vv #查看本地对应远程的分支对应关系 git branch -a #查看本地和远程所有分支 git checkout -b [hongyuan] #以当前的本地分支作为基础新建一个【】分支,命名为h…...

c++之旅第十一弹——顺序表
大家好啊,这里是c之旅第十一弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一,数据结构…...
深入了解 PXE:定义、架构、原理、应用场景及常见命令体系
引言 PXE(Preboot Execution Environment,预启动执行环境)是一种允许计算机通过网络启动操作系统而无需本地存储设备的技术。本文将详细介绍 PXE 的定义、架构、原理、应用场景及常见命令体系,特别是以 CentOS 为例,展…...
《每天5分钟用Flask搭建一个管理系统》第9章:API设计
第9章:API设计 9.1 RESTful API的概念 RESTful API是一种基于HTTP协议的网络服务接口设计方法,它使用标准的HTTP方法,如GET、POST、PUT、DELETE等,来执行资源的操作。 9.2 Flask-RESTful扩展的使用 Flask-RESTful是一个Flask扩…...
CCM的作用及原理
CCM调试的理论依据_ccm矩阵sat调试-CSDN博客 CCM是在WB之后,就是当AWB将白色校正之后其他颜色也会跟着有明显变化,CCM的作用就是要保持白色不变,把其他色彩校正到非常精准的地步。 校正后的颜色(target值是一个固定的值)CCM矩阵*原始的颜色…...

10.09面试题目记录
艾融软件 - 线上面试题 排序算法的时间复杂度 O(n^2):冒泡,选择,插入 O(logn):折半插入排序 O(nlogn):希尔,归并,快速,堆 O(nk):桶,…...

14-29 剑和诗人3 – 利用知识图谱增强 LLM 推理能力
知识图谱提供了一种结构化的方式来表示现实世界的事实及其关系。通过将知识图谱整合到大型语言模型中,我们可以增强它们的事实知识和推理能力。让我们探索如何实现这一点。 知识图谱构建 在利用知识图谱进行语言模型增强之前,我们需要从可靠的来源构建…...

【代码大全2 选读】看看骨灰级高手消灭 if-else 逻辑的瑞士军刀长啥样
文章目录 1 【写在前面】2 【心法】这把瑞士军刀长啥样3 【示例1】确定某个月份的天数(Days-in-Month Example)4 【示例2】确定保险费率(Insurance Rates Example)5 【示例3】灵活的消息格式(Flexible-Message-Format …...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...