学习鸿蒙先解决这几个是关键问题~

HarmonyOS 是最近最火的操作系统,HarmonyOS 宣布删除 Android 代码之后,正式向世界上第三大操作系统有迈进了一步,HarmonyOS 前期为了完成从 Android 到 HarmonyOS 的过渡,在设计之初 HarmonyOS 采用了双框架架构设计。

学习鸿蒙先解决这几个是关键问题~_第1张图片

从图中可以看出无论 HarmonyOS 还是 Android 底层都是 Linux 内核,在 Linux 内核的上一层,还有硬件抽象层,从这一层开始将 HarmonyOS 和 Android 分为了两部分,等到发展到一定阶段之后,HarmonyOS 部分会逐步替换掉 Android 部分。

如今 HarmonyOS 完全去 Android 化势在必行了,在技术多变的时代,顺应技术的趋势,我们也不得不去学习 HarmonyOS,我也开始准备更新鸿蒙系列文章了,这次鸿蒙系列文章会以文章 + 案例 + 实战项目的形式分享给正在学习鸿蒙的小伙伴。

在学习 HarmonyOS 过程中,发现 HarmonyOS 的问题太多了,而且很多问题在网上都找不到答案,只能自己一点一点去摸索,走了不少弯路,这篇文章主要记录了我在学习鸿蒙过程中遇到的问题,分享给正在学习的鸿蒙的你,避免少走一些弯路。

学习鸿蒙先解决这几个是关键问题~_第2张图片

鸿蒙目前还处于初期发展阶段,网上对鸿蒙问题的解答太少了,而群是一个非常好的沟通渠道,相比于自己去摸索,通过与大家的沟通交流,效率会提高很多。所以我想建一个鸿蒙学习交流群,诚邀各位小伙伴一起来打造一个良好的学习氛围沟通群。

但是我不知道有多少人对鸿蒙开发感兴趣,因此我想做个简单的统计,正在学习或者对鸿蒙感兴趣的,可以在文章中右下角点个在看,或者给这篇文章点个赞。如果学习的人多的话,我们可以拉个群,互相分享经验。

Stage 模型与 FA 模型的区别

当我们创建 Harmony 工程的时候,会让我们选择工程的模型。

学习鸿蒙先解决这几个是关键问题~_第3张图片

Harmony 的工程模型,分别为 Stage 模型与 FA 模型。

  • FA 模型:Harmony 初期的模型,仅适用简单的应用开发,比如笔记本、闹钟之类的软件。因为在 FA 模型,每个应用组件独享一个虚拟机,占用的运行内存会更多

  • Stage 模型:官方推荐的模型,相比于 FA 模型它适用于复杂应用开发。在 Stage 模型中多个应用组件共享同一个虚拟机,可以减少运行内存的占用,同时为了降低性能的损耗,保障用户体验,Harmony 对后台应用会有严格的管理机制

Harmony 后台管理机制

Harmony 对后台应用会有严格的管理机制,普通应用是不能随意驻留在后台,除非你的应用是国民级别的应用,Harmony 对后台应用会进行有序的治理,系统定义了四类后台任务。在这里只需要了解即可,后面的文章我会详细的分析。

学习鸿蒙先解决这几个是关键问题~_第4张图片

配置环境变量

无论是开发 Android 还是开发 HarmonyOS,第一步都是要配置好环境变量,方便后期使用。

在命令行中配置 hdc

hdc 等同于 adb 是 HarmonyOS 为开发人员提供的用于调试的命令行工具,通过该工具可以在 windows/linux/mac 系统上与真实设备或者模拟器进行交互。

Mac 在不同的系统中使用不同的 shell, 使用下面命令查看自己使用的是哪一个 shell。

echo $SHELL 
  • 如果输出结果为 /bin/bash,你的配置文件是 .bash_profile,打开文件命令 vi .bash_profile

  • 如果输出结果为 /bin/zsh,你的配置文件是 .zshrc, 打开文件命令 vi .zshrc

打开配置文件,将下面的内容添加到文件末尾。记得将「用户名目录」修改为你电脑的用户名。

export HARMONY\_HOME\=/Users/用户名目录/Library/Huawei  
export HARMONY\_SDK\_HOME\=$HARMONY\_HOME/sdk  
export PATH\=$HARMONY\_SDK\_HOME/hmscore/3.1.0/toolchains:$PATH

保存文件,执行下面命令立即生效。

  • 如果配置文件是 .bash_profile,执行 source ~/.bash_profile

  • 如果配置文件是 .zshrc,执行 source ~/.zshrc

最后验证 hdc 是否配置成功。

hdc \-v

hdc 和 adb 一样也有一堆命令,后期我会总结好分享给大家。

在命令行中配置 ohpm

OHPM CLI 作为鸿蒙生态三方库的包管理工具,支持 OpenHarmony 共享包的发布、安装和依赖管理。这个工具在开发中经常会用到,比如在模块中依赖三方库,我们可以使用 ohpm 下载安装第三方库。所以配置好 ohpm 环境变量,方便我们在开发中使用。

打开配置文件

  • 如果配置文件是 .bash_profile,执行 vi ~/.bash_profile

  • 如果配置文件是 .zshrc,执行 vi ~/.zshrc

将下面的内容,添加到配置文件末尾。记得将「用户名目录」修改为你电脑的用户名。

export HARMONY\_HOME\=/Users/用户名目录/Library/Huawei/  
export PATH\=$HARMONY\_HOME/ohpm/bin:$PATH

保存文件,执行下面命令立即生效。

  • 如果配置文件是 .bash_profile,执行 source ~/.bash_profile

  • 如果配置文件是 .zshrc,执行 source ~/.zshrc

最后验证 ohpm 是否配置成功。

ohpm \-v

但是在下载安装 ohpm 工具包和使用 ohpm 时可能会出现不同的错误,这里列了几个常见的错误。

ohpm install failed
Error: execute install task failed, component ohpm.zip.  
Error: execute 'ohpm install' failed.

这是由于 NPM 以前版本中的一个 bug 导致,运行下面的命令即可解决。

sudo chown -R 501:20 “/Users/替换为你mac的用户名/.npm”

ohpm registry is empty

创建 Harmony 项目之后 build 时可能出现 ohpm registry is empty 的错误。

ohpm ERROR: The registry is empty \- edit .ohpmrc file or use "ohpm config set registry your\_registry" command to set registry.  
ohpm ERROR: Install failed  

想解决这个问题,我们需要在 DevEco Studio 中配置 ohpm 仓库的地址,按照下面的路径打开 Ohpm 窗口。

DevEco Studio -> Perferences -> Build, Execution, Deployment -> Ohpm

学习鸿蒙先解决这几个是关键问题~_第5张图片

点击 Optimize Config 会弹出了一个界面。

学习鸿蒙先解决这几个是关键问题~_第6张图片

ohpm registry 中输入 ohpm 仓库的地址并勾选。

https://repo.harmonyos.com/ohpm/

保存成功之后,重新 build 项目即可成功。

真机和模拟器无法运行

首先检查你的 DevEco Studio 版本是否是 3.1 Release,这个版本可能存在一些问题。

真机无法连接

我用 usb 连接真机,在 DevEco Studio 设备管理器中无法显示,用命令查看已经连接上了,我猜测是这个版本的问题,于是我尝试降级到 DevEco Studio 3.1 Beta2 正常了。

本地模拟器无法运行

从 DevEco Studio 3.1 开始支持两个模拟器,API 版本分别为 6、9,无论哪个模拟器都无法运行。

学习鸿蒙先解决这几个是关键问题~_第7张图片

于是我查看了 鸿蒙的开发文档 DevEco Studio >=3.1 本地模拟器仅支持以下系统中运行。

  • Windows 系统:内存推荐为 16GB 及以上。

  • macOS 系统:内存推荐为 8GB 及以上。如果是 ARM 版本的 macOS,macOS 版本需在 12.2 及以上,否则将无法运行本地模拟器。

但是我的 macOS 的版本是 12.5.1 不仅本地模拟器无法运行,而且真机连接了也无法显示。

我猜测这个问题应该也是 DevEco Studio 版本的原因,于是我尝试降级到 DevEco Studio 3.1 Beta2,成功运行 DevEco Studio 支持的模拟器。

但是这里需要注意的是如果你的 macOS >=10.14 and macOS < 12.2 只能运行 API 版本是 6 的模拟器。

如果有遇到和我一样问题的小伙伴,可以采用临时方案,尝试降级 DevEco Studio 版,等待官方解决吧。

如何解决安装错误

好不容易解决了开发工具的问题,满心欢喜想运行鸿蒙应用体验一下,结果安装应用时报错了,让我喝杯茶压压惊。

学习鸿蒙先解决这几个是关键问题~_第8张图片

这是因为运行的设备(模拟器和真机)和 SDK 版本的不匹配,因此会报 INSTALL_PARSE_FAILED_USESDK_ERROR 错误。

想解决这个问题,需要将 compileSdkVersioncompatibleSdkVersion 以及 SDK 版本需要与运行设备的 apiVersion 对应起来。

但是我们不能简单修改配置文件中 compileSdkVersion 和 c ompatibleSdkVersion 的版本号,因为使用不同的 HarmonyOS Sdk 版本,创建的 HarmonyOS 工程的目录结构和开发语言都不相同。

  • API Version 4~7 构建体系是由 Gradle 构建工具和构建插件组成,不要基于这个版本去开发,不然后期从 Gradle 迁移到 Hvigor 是件非常痛苦的事

  • API Version 8~9 构建体系是由 Hvigor 构建工具和构建插件组成

开发语言也不一样:

  • API Version >= 9 仅仅支持 ArkTS

  • API Version == 8 支持 ArkTS 和 JS

  • API Version == 7 支持 ArkTS 、 JS 和 Java

  • API Version < 7 支持 JS 和 Java

所以我们不能简单的修改 compileSdkVersioncompatibleSdkVersion 的版本,对于我们初学者,如果出现这个问题,建议重新创建一个新的工程。

新建项目时 Compile Sdk 应该选择与你运行的设备(模拟器和真机) apiVersion 相对应的版本号。

学习鸿蒙先解决这几个是关键问题~_第9张图片

如何查看运行的设备(模拟器和真机) apiVersion 的版本

这里我们需要用到 hdc 工具,hdc 的配置在前面已经介绍过了,hdc 的用法等价于 adbhdc 如何使用,后期我会总结好分享给大家。

hdc shell  
getprop hw\_sc.build.os.apiversion

输出结果即是设备(模拟器和真机) apiVersion 的版本。

运行项目常见错误

当我以为一切都正常的时候,运行项目,有出现了一个新的错误,真令人崩溃,跑起一个项目怎么这么难。

学习鸿蒙先解决这几个是关键问题~_第10张图片

对应的错误信息。

{  
 instancePath: 'app.compileSdkVersion',  
 keyword: 'exclusiveMinimum',  
 params: { comparison: '>', limit: 7 },  
 message: 'must be > 7',  
 location: '/Users/用户名目录/Documents/codebase/harmonyOs/Application/build-profile.json5:4:27'  
}

这是因为创建的是 Hvigor 工程,而 Hvigor 工程支持最低的 apiVersion 版本是 7,而我修改了 apiVersion 的版本 < 7, 因此运行的时候会出现上面的错误。因此我们应该选择 Compile Sdk 和你运行设备(模拟器和真机) apiVersion 相对应的版本号。

在鸿蒙模拟器,运行 Android 应用

Android 同学都体验过 Android Studio 自带的模拟器是多么的难用,网上也有很多 Android 模拟器,但是安装的门槛高,而且安装好了运行会出现很多问题,体验也不是那么的好。

DevEco Studio 提供的模拟器,相比于其它的模拟器,非常的好用,Android 同学可以在下载体验一下,在鸿蒙的模拟器上安装 Android 应用,对于简单的应用体验还是可以的。而且 DevEco Studio 的模拟器安装非常的简单。

如何安装鸿蒙的模拟器

按照图示方式打开 Device Manager。

学习鸿蒙先解决这几个是关键问题~_第11张图片

点击 New Emulator 按钮,按照图示,操作即可。

学习鸿蒙先解决这几个是关键问题~_第12张图片

如何安装 Android 应用到鸿蒙的模拟器

但是我们需要修改 Android 项目支持的 CPU/API 版本。因为 Harmony 的模拟器 CPU/API 是 x86,所以需要在 build.gradle 文件中添加 x86 的支持。

android {  
 compileSdkVersion 33  
 defaultConfig {  
 ndk {  
 abiFilters 'x86\_64','x86'  
 }  
 }  
}

DevEco Studio 和 Android Studio 样式文件共享

DevEco Studio 和 Android Studio 都是基于 idea 开发的,所以如果习惯了 Android Studio 开发界面,我们可以把 Android Studio 界面的样式,导入到 DevEco Studio 中。

如何导出 Android Studio 界面的样式

学习鸿蒙先解决这几个是关键问题~_第13张图片

如何导入 Android Studio 界面的样式到 DevEco Studio

学习鸿蒙先解决这几个是关键问题~_第14张图片

最终的效果对比。DevEco Studio 和 Android Studio 都支持定义自己的外观样式,大家可以按需定制。

学习鸿蒙先解决这几个是关键问题~_第15张图片

为了能让大家更好的学习鸿蒙 (OpenHarmony) 开发技术,这边特意整理了《鸿蒙 (OpenHarmony)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (OpenHarmony)开发学习手册》

入门必看:https://qr21.cn/FV7h05

  1. 应用开发导读(ArkTS)
  2. ……

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门?:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

你可能感兴趣的:(HarmonyOS,OpenHarmony,移动开发,学习,harmonyos,华为,移动开发,openharmony,鸿蒙)