Harmony 应用开发的知识储备
Harmony 应用开发的知识储备
- 前言
- 正文
- 一、DevEco Studio版本
- 二、手机版本
- ① 环境变量
- 三、API版本
- 四、开发语言
- 五、运行调试
前言
这里先说明一点,如果你对Android应用开发很熟悉,那么做Harmony应用开发也可以驾轻就熟,只不过在此之前你需要知道一些关于Harmony应用开发的相关知识。
正文
那么问题就来了,我为什么会知道这些相关的知识点呢?因为踩过一遍坑了,说多了都是泪,唯有文字记录,当然了不同应用开发会踩不同的坑,这是无可厚非,开发的越多知道的就越多,不知道的也越多,因此本文会持续更新。闲话少说,我们进入正题。
一、DevEco Studio版本
首先要了解Harmony应用开发的开发工具DevEco Studio。

首先你可以下载DevEco Studio,下载地址,安装DevEco Studio,参看这个视频:演示视频,观看这个视频可能需要华为账号,如果没有的话你先注册一个,关于DevEco Studio的版本也是持续更新的,它是基于IDEA进行二次开发的,如果Android Studio一样。当前最新的版本是DevEco Studio 3.1。
二、手机版本
做Harmony应用开发如果在真机上时,我们需要了解的是鸿蒙手机的版本,这里的版本不是鸿蒙几点零版本,而是指的是开发API版本,这一点就很重要了,至于为什么,后面我再细说,那么我们怎么查看鸿蒙手机的API版本呢?通过环境变量配置工具就可以了。
① 环境变量
首先进入系统的环境变量页面,在系统变量下新增一个变量,如下图所示:

变量名:HUAWEI_SDK
变量值:C:\Huawei\Sdk\hmscore\3.1.0\toolchains
需要注意的是你所安装的编辑器路径,上图是我的路径,你要使用自己的路径,其中3.1.0表示的是sdk的版本,最新的就是3.1.0。配置好之后点击确定,然后在系统变量下找到Path变量,点击编辑。

然后点击新建,输入%HUAWEI_SDK%,点击确定,一路确定。下面我们Win + R打开运行窗口,输入cmd,打开命令行窗口。
输入hdc

出现如图所示,说明环境变量配置成功了,只不过现在你的电脑没有连接鸿蒙设备,所以显示No any target,下面我们打开鸿蒙手机的开发者模式,然后通过数据线连接电脑,如果手机上出现一个调试弹窗,勾选上,然后你再输入hdc -v。
查看手机API版本,首先进入hdc shell模式,如同adb shell
hdc shell
查看手机的API版本
getprop hw_sc.build.os.apiversion
查看手机的版本类型,一般都是Relase。
getprop hw_sc.build.os.releasetype

通过查询可以得知我的HUAWEI P30是API 6的Release版本。
如果上面的指令查不到,你可以使用
getprop persist.sys.ohc.apiversion
和
getprop persist.sys.ohc.releasetype
这是在高版本API的情况下使用的指令,如果你觉得麻烦那就这样。
if [ -z $(getprop persist.sys.ohc.apiversion) ];then
echo $(getprop hw_sc.build.os.apiversion)
echo $(getprop hw_sc.build.os.releasetype)
else
echo $(getprop persist.sys.ohc.apiversion)
echo $(getprop persist.sys.ohc.releasetype)
fi
在hdc shell之后,你把这段代码复制过去,然后回车,就会看到6和Release。
三、API版本
上面我们费尽心思去获取鸿蒙手机的API版本的目的是为了什么呢?
| 编译SDK版本 | API版本 | 开发语言 |
|---|---|---|
| 3.1.0 | 9 | ArkTS |
| 3.0.0 | 8 | ArkTS、JS |
| 3.0.0 | 7 | JS、Java |
| 2.2.0 | 6 | JS、Java |
| 2.1.0 | 5 | JS、Java |
| 2.0.0 | 4 | JS、Java |
通过上表我们可以了解到DevEco Studio的编译SDK版本,支持的API版本和开发语言,至于更早的API版本其实知不知道没有太大关系,因为现在基本上最低都是Harmony2.0了,普遍是3.0,比如我目前用的测试机,HUAWEI P30 就是之前从2.0升到3.0,不知道还有没有机会升级到4.0。
目前HarmonyOS属于高速发展的阶段,每一个版本的更新内容都很多,一些功能也会逐步开放,如果如果你有条件的话,弄一个高版本API的手机,会让你开发起来事半功倍,因为你现在看到的Harmony官网主推的是ArkTS,兼容性也会越来越好,未来可能就是ArkTS是唯一支持语言了,而且论坛上的信息最新的也是ArkTS,至于Java相关的都是21年的了,而且很多不维护了。首先你要知道你的手机API版本,不然你到时候看了半天ArkTS,然后发现调试的时候用不了,还是得用Java或JS,这就是我说的坑。
四、开发语言
开发语言首先要看你的兼容性了,这里就有一个坑,那就是API版本兼容的问题,比如你买了一个Mate 60 Pro遥遥领先,虽然它是HarmonyOS4.0,然后你通过hdc查看API版本可能会是 8 ,而不是 9 。而我的测试机P30是 6 ,那么如果我创建一个API 9的工程进行开发,是无法在P30上进行真机调试的,因为版本不兼容,所以我就用不了ArkTS语言进行开发。就需要创建符合手机API版本的工程来进行开发,比如API 6,如下图所示。

高版本API的鸿蒙手机是可以在低版本API工程上进行编译的,就是我现在创建一个API 6 的工程,然后真机调试同事的Mate 40 Pro,是可以的。
五、运行调试
当我们创建好一个工程之后,要想运行,首先要做的就是配置Debug相关信息,这个是和iOS有点类似,你可以点击DevEco Studio,File → Project Structure。如果你是一个新项目的话,这里可能就会需要你登陆一下华为账号,然后你在能进入Signing Configs进行本地Debug的证书配置。

当这个页面出现下面的信息之后你就可以在本地Debug运行调试了。

你可以勾选上Automatically generate signature项目,让编辑器可以在之后的开发中自动根据你的更改内容同步更改这些配置。
同时在编译安装过程中,DevEco Studio默认每一次都会卸载你之前安装的应用然后再安装,之前的应用数据不会保留,如果你不希望这样。可以进入Run → Edit Configurations...。

勾选上Keep Application Data,这样就会覆盖安装应用了。
相关文章:
Harmony 应用开发的知识储备
Harmony 应用开发的知识储备 前言正文一、DevEco Studio版本二、手机版本① 环境变量 三、API版本四、开发语言五、运行调试 前言 这里先说明一点,如果你对Android应用开发很熟悉,那么做Harmony应用开发也可以驾轻就熟,只不过在此之前你需要知…...
(层次遍历)104. 二叉树的最大深度
原题链接:(层次遍历)104. 二叉树的最大深度 思路: 使用层序遍历模板,遍历每一层 hight1 返回hight即可 全代码: class Solution { public:int maxDepth(TreeNode* root) {queue<TreeNode*> que;int hight 0;if(root NU…...
【api_fox】ApiFox简单操作
1、get和post请求的区别?2、接口定义时的传参格式?3、保存接口文档 apifox当中接口文档的设计和接口用例的执行是分开的。 1、get和post请求的区别? 2、接口定义时的传参格式? 3、保存接口文档 就生成如下的接口文档。...
给CAD中添加自定义菜单CUIX
本文以AutoCAD2020为例,介绍如何添加自定义菜单。 打开AutoCAD2020,在命令行执行CUI并回车,出现菜单 进入菜单编辑界面 点击传输,然后新建 在菜单上右键,添加自定义菜单 点击保存,即可存为cuix文件。之后…...
Qt重启windows服务
日常开发中,会遇到改变某个服务的参数,并进行重启(例如Redis断电恢复机制) 需要程序拥有UAC权限,并且调用如下API才能对windows服务进行重启: #include "windows.h"#pragma comment(lib, "…...
OD机考真题:宜居星球改造计划
题目 2XXX 年,人类通过对火星的大气进行宜居改造分析,使得火星已在理论上具备人类宜居的条件; 由于技术原因,无法一次性将火星大气全部改造,只能通过局部处理形式; 假设将火星待改造的区域为 row * column_row_∗_column_ 的网格,每个网格有 3 个值,宜居区、可改造区、…...
Python每日练习:20个常用代码,初学者也可以自己实现!
文章目录 前言20个代码1.重复元素判定2.字符元素组成判定3.内存占用4.字节占用5.打印 N 次字符串6.大写第一个字母7.分块8.压缩9.解包10.链式对比11.逗号连接12.元音统计13.首字母小写14.展开列表15.列表的差16.通过函数取差17.链式函数调用18.检查重复项19.合并两个字典20.将两…...
GitHub Copilot Chat将于12月全面推出;DeepLearning.AI免费新课
🦉 AI新闻 🚀 GitHub Copilot Chat将于12月全面推出,提升开发者的生产力 摘要:GitHub宣布将于12月全面推出GitHub Copilot Chat,这是GitHub Copilot的一个新功能,旨在帮助开发者编写代码。它能够集成到开…...
Java的流操作:让数据处理更简单,更高效
Java 8引入了一种新的抽象概念——流(Stream),它允许我们以声明式方式处理数据集合。通过使用流,可以更简洁、更易读地编写代码来对集合进行复杂的操作,如过滤、映射、排序等。本文将介绍Java 8的流操作的基本概念和使…...
3D渲染原理及朴素JavaScript实现【不使用WebGL】
在网页中显示图像和其他平面形状非常容易。 然而,当涉及到显示 3D 形状时,事情就变得不那么容易了,因为 3D 几何比 2D 几何更复杂。 为此,你可以使用专用技术和库,例如 WebGL 和 Three.js。 但是,如果你只…...
解决《荒野大镖客》提示emp.dll文件丢失问题,总结5个修复方法
在当今数字时代,游戏已经成为人们休闲娱乐的重要方式。作为一名游戏爱好者,笔者在近期体验《荒野大镖客》这款游戏时,遇到了一个令人苦恼的问题——emp.dll文件丢失。这个问题让游戏的无法启动进行。本文将围绕这一问题,探讨其原因…...
maven重新加载后Target bytecode version总是变回1.8
现象 Load Maven Changes后 Settings - Build, Execution, Deployment - Java Compiler - Target bytecode version总是变为1.8 Project Structure - Modules - Language level总是变为1.8 解决方法 方法一 pom.xml中包含 <project>[...]<build>[...]<plug…...
react+星火大模型,构建上下文ai问答页面(可扩展)
前言 最近写的开源项目核心功能跑通了,前两天突发奇想。关于项目可否介入大模型来辅助用户使用平台,就跑去研究了最近比较活火的国内大模型–讯飞星火大模型。 大模型api获取 控制台登录 地址:https://console.xfyun.cn/app/myapp 新建应…...
python---设计模式
python中设计模式-单例模式 基于__new__方法实现 第一个设计: class MySingleton:def __init__(self):passdef __new__(cls, *args, **kwargs):passmysingleton1 MySingleton() mysingleton2 MySingleton() print(mysingleton1) print(mysingleton2) print(id(…...
Java编写xml文件时,文件中特殊字符如何解决?
有一个使用Java创建XML文件的需求,但标签里面有以下特殊字符<、>、&等 在未解决之前,创建出的XML是这样的 <?xml version"1.0" encoding"UTF-8"?><actionlist><update><jobno>1111</jobno&…...
vue3 ts pinia openapi vue-query pnpm docker前端架构小记
1.引言 开发中,我们是否经常遇到以下痛点: 项目越大,启动和热更新越来越慢,启动都要花个3-5分钟以上没有类型保障,接口返回的Object不拿到真实数据都不知道有哪些字段,接手别人js项目(无类型)很痛苦需要手…...
ARM day4
LED灯亮灭控制 .text .global _start _start: 1ldr r0,0x50000a28ldr r1,[r0]orr r1,r1,#(0x3<<4)str r1,[r0] 2ldr r0,0x50006000ldr r1,[r0]bic r1,r1,#(0x3<<20)orr r1,r1,#(0x1<<20)bic r1,r1,#(0x3<<16)orr r1,r1,#(0x1<<16)str r1,[r0]…...
3.30每日一题(多元函数微分学)
1、判断连续:再分界点的极限值等于该点的函数值; 如何求极限值: 初步判断:分母都为二次幂开根号,所以分母为一次幂;分子为二次,一般来说整体为0; 如何说明极限为零(常用…...
《OSTEP》条件变量(chap30)
〇、前言 本文是对《OSTEP》第三十章的实践与总结。 一、条件变量 #include <pthread.h> #include <stdio.h> #include <assert.h>int buffer; int count 0; // 资源为空// 生产,在 buffer 中放入一个值 void put(int value) {assert(count 0);count 1…...
MySQL的索引和复合索引
由于MySQL自动将主键加入到二级索引(自行建立的index)里,所以当select的是主键或二级索引就会很快,select *就会慢。因为有些列是没在索引里的 假设CA有1kw人咋整,那我这个索引只起了前一半作用。 所以用复合索引&am…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
