OpenHarmony4.0Release系统应用常见问题FAQ
前言 自OpenHarmony4.0Release发布之后,许多小伙伴使用了配套的系统应用源码以及IDE作为基线开发,也遇到了各种各样的问题,这篇文档主要收录了比较常见的一些问题解答。 FAQ 系统应用源码在哪 目前OpenHarmony系统应用分为3种模式: 标准ArkTS工程,通过IDE和SDK编译,并将构建好的hap预置到rom里。参考applications_开头的仓,如applicati
前言
自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。具体的对应版本如下:
IDE版本(build) | hvigor版本 |
---|---|
4.0Release(4.0.0.600) | 3.0.9 |
4.0Beta2(4.0.0.400) | 3.0.2 |
3.1.1Release(3.1.0.501) | 2.4.2 |
3.1.Release(3.1.0.500) | 2.1.1 |
以上罗列出了最新的4个版本的对应关系,更原始的版本可以通过以下2种方式查看:
通过新建默认工程里的hvigor版本来查看。
如何替换Full-SDK
想要开发系统应用,IDE默认下载Public-SDK无法提供相应的能力,需要使用到包含所有的能力的Full-SDK。以下为Full-SDK的下载使用方式:
进入CI平台http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist
依次选择需要的分支、日期、每日构建或者滚动构建
下载ohos-sdk-full(Mac M1芯片为mac-sdk-full)。当然,也可以选择自己编译系统配套的SDK。
替换使用Full-SDK,参考https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/faqs/full-sdk-switch-guide.md
注意: 不同版本的IDE,SDK的目录结构是不同的。所以最好在替换之前,根据IDE默认下载的Publick-SDK来确认下目录结构。
如何识别系统应用源码该使用什么开发环境
IDE: 首先可以通过hvigor与IDE的关系来找到对应工程里hvigor版本对应的IDE版本。如果无法正常编译,可以找到当前系统应用源码配套发布的IDE(Tag版)。
SDK: 默认选用到当前系统应用源码配套发布的SDK(Tag版)。如果无法正常编译,可以尝试使用daily build最新的branch版。
以上环境,如果还是无法正常编译,请在对应社区仓库下提issue。
系统权限说明
系统应用一般会用到系统权限的api,不同的系统权限有对应的授权方式和等级。具体可以参考:
系统应用如何签名
系统应用需要通过OpenHarmony系统颁发的证书去进行签名才可以被识别为系统应用并能够使用系统权限接口,具体如何配置生成配置签名可以参考:
为了能够更快速的配置系统签名,可以参考以下步骤:
将附件里的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来安装。
如何预置系统应用
在OpenHarmony中,系统应用会在镜像编译时,就预置在了ROM里,设备烧录镜像启动后,会自动进行安装,安装时,需要校验一些配置。
具体可参考OpenHarmony应用签名 - 系统应用签名里的应用特权配置一文。
更多推荐
所有评论(0)