前言
自OpenHarmony4.0Release发布之后,许多小伙伴使用了配套的系统应用源码以及IDE作为基线开发,也遇到了各种各样的问题,这篇文档主要收录了比较常见的一些问题解答。
FAQ
系统应用源码在哪
目前OpenHarmony系统应用分为3种模式:
- 标准ArkTS工程,通过IDE和SDK编译,并将构建好的hap预置到rom里。参考applications_开头的仓,如applications_launcher。这类系统应用的源码会同步下载在OpenHarmony工程路径applications/standard下,hap预置在applications/standard/hap下。
- 非标准ArkTS工程,通过GN随系统一起编译。参考power_dialog。这类系统应用的源码预置在各个子系统下,当子系统全量编译时会随之一起编译。
注意:该类系统应用是可以将源码通过IDE和SDK编译的,但是需要将工程适配为标准ArkTS工程。
- C++工程,系统调用C++接口进行界面开发。参考SmartPerf。这类系统应用在系统层进行UI开发,在服务层调用各个子系统的接口。无法通过IDE和SDK编译。
hvigor与IDE的关系
hvigor作为OpenHarmony应用开发的编译构建工具,与IDE是深度绑定关系,每个版本的IDE都需要用到指定版本的hvigor。具体的对应版本如下:
以上罗列出了最新的4个版本的对应关系,更原始的版本可以通过以下方式查看:
- 通过新建默认工程里的hvigor版本来查看。
如何替换Full-SDK
想要开发系统应用,IDE默认下载Public-SDK无法提供相应的能力,需要使用到包含所有的能力的Full-SDK。以下为Full-SDK的下载使用方式:
- 依次选择需要的分支、日期、每日构建或者滚动构建
- 下载ohos-sdk-full(Mac M1芯片为mac-sdk-full)。当然,也可以选择自己编译系统配套的SDK。
注意: 不同版本的IDE,SDK的目录结构是不同的。所以最好在替换之前,根据IDE默认下载的Publick-SDK来确认下目录结构。
如何识别系统应用源码该使用什么开发环境
IDE: 首先可以通过hvigor与IDE的关系来找到对应工程里hvigor版本对应的IDE版本。如果无法正常编译,可以找到当前系统应用源码配套发布的IDE(Tag版)。
SDK: 默认选用到当前系统应用源码配套发布的SDK(Tag版)。如果无法正常编译,可以尝试使用daily build最新的branch版。
以上环境,如果还是无法正常编译,请在对应社区仓库下提issue。
系统权限说明
系统应用一般会用到系统权限的api,不同的系统权限有对应的授权方式和等级。具体可以参考:
- 访问控制开发指导
- 应用权限列表
系统应用如何签名
系统应用需要通过OpenHarmony系统颁发的证书去进行签名才可以被识别为系统应用并能够使用系统权限接口,具体如何配置生成配置签名可以参考:
- OpenHarmony应用签名 - 系统应用签名
- OpenHarmony3.2release系统应用适配DevEcoStudio3.1Release
为了能够更快速的配置系统签名,可以参考以下步骤:
- 将附件里的signature.zip解压后,整个signature目录放到工程的根目录下。
- cd到signature目录下,修改UnsgnedReleasedProfileTemplate.json文件,
{ ··· "bundle-info":{ ··· "bundle-name":"com.winslei.winsleikit", // 修改为工程bundlename "apl":"system_core", // 固定填写 "app-feature":"hos_system_app" // 固定填写 }, ··· }
- 按照注释里的要求修改。
- 在当前目录下,通过指令
java -jar hap-sign-tool.jar sign-profile -keyAlias "OpenHarmony Application Profile Release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile OpenHarmonyProfileRelease.pem -inFile UnsgnedReleasedProfileTemplate.json -keystoreFile OpenHarmony.p12 -outFile xxx.p7b -keyPwd "123456" -keystorePwd "123456"
- 生成p7b文件,指令里的xxx.p7b可以重命名为工程相关的文件名。
- 在工程根目录的build-profile.json5下新增配置
{ "app": { "signingConfigs": [ { "name": "default",// 自定义 "material": { "storePassword": "0000001603DBE67A8D62C8FF58CB88759393A88777330A0843AFDFDA7BFA5B23B0089D7C89F8", // 固定填写 "certpath": "signature/OpenHarmony.cer",// 固定填写 "keyAlias": "OpenHarmony Application Release",// 固定填写 "keyPassword": "00000016C087D511DACD8A7EFF7AB4D5995DC5442CAC0883351B588CB422C783EBFA863E4537",// 固定填写 "profile": "signature/xxx.p7b", // 第三步生成的p7b文件 "signAlg": "SHA256withECDSA",// 固定填写 "storeFile": "signature/OpenHarmony.p12"// 固定填写 } } ], } }
依次点击File->Sync and Refresh Project即可配置好签名
如何替换系统应用
在系统应用源码在哪一文里,系统应用按照应用工程大概分为3类。
通过Ability区分的话,系统应用又会分为如下两类:
- 默认的UIAbility,如:Settings、Photos、Camera等,这类系统应用能够展示在桌面。
- ExtensionAbility,如:Launcher、SystemUI、Settingsdata等,这类系统应用有的创建了窗口从而能显示界面,而有的则属于无页面的常驻服务去提供对应的
能力。
因此传统的hdc install命令以及IDE的自动安装都无法正常安装,这个时候,就需要用到系统应用的替换。
以Launcher为例,系统应用的替换步骤如下:
找到Launcher预置hap路径
-
/system/app/com.ohos.launcher
可以看到该路径下有2个hap(Launcher.hap、Launcher_Settings.hap)。
执行以下指令
hdc shell "mount -o remount,rw /"
hdc shell "rm -rf /data/*"
hdc file send Launcher.hap /system/app/com.ohos.launcher/Launcher.hap
hdc file send Launcher_Settings.hap /system/app/com.ohos.launcher/Launcher_Settings.hap
hdc shell "reboot"
- 即可正常替换安装自己构建的Launcher。
注意:
1. 上述命令中的2个hap路径为本地构建的hap路径。
2. 同一个包名下的hap,必须使用同一套签名编译构建。
3. 类型为UIAbility的系统应用当第一次通过替换安装成功后,后续对于同一套签名及SDK构建出的应用,可以通过hdc install或者IDE来安装。
为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《Open Harmony4.0&Next》的学习导图,从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:
除了以上的知识内容,我还为大家整理了一份《鸿蒙 (Harmony OS)开发学习手册》都是整理成PDF文档方式,分享给大家参考学习:《做鸿蒙应用开发到底学习些啥?》
《鸿蒙 (Harmony OS)开发学习手册》
一、入门必看
1. 应用开发导读(ArkTS)
2. 应用开发导读(Java)
3.......
二、HarmonyOS 概念
1. 系统定义
2. 技术架构
3. 技术特性
4. 系统安全
5......
三、如何快速入门?《鸿蒙基础入门开发宝典!》
1. 基本概念
2. 构建第一个ArkTS应用
3. 构建第一个JS应用
4. ……
四、开发基础知识
1. 应用基础知识
2. 配置文件
3. 应用数据管理
4. 应用安全管理
5. 应用隐私保护
6. 三方应用调用管控机制
7. 资源分类与访问
8. 学习ArkTS语言
9. ……
五、基于ArkTS 开发
1. Ability开发
2. UI开发
3. 公共事件与通知
4. 窗口管理
5. 媒体
6. 安全
7. 网络与链接
8. 电话服务
9. 数据管理
10. 后台任务(Background Task)管理
11. 设备管理
12. 设备使用信息统计
13. DFX
14. 国际化开发
15. 折叠屏系列
16. ……
更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙开发学习指南》