前言

自OpenHarmony4.0Release发布之后,许多小伙伴使用了配套的系统应用源码以及IDE作为基线开发,也遇到了各种各样的问题,这篇文档主要收录了比较常见的一些问题解答。

FAQ

系统应用源码在哪

目前OpenHarmony系统应用分为3种模式:

  1. 标准ArkTS工程,通过IDE和SDK编译,并将构建好的hap预置到rom里。参考applications_开头的仓,如applications_launcher。这类系统应用的源码会同步下载在OpenHarmony工程路径applications/standard下,hap预置在applications/standard/hap下。

  2. 非标准ArkTS工程,通过GN随系统一起编译。参考power_dialog。这类系统应用的源码预置在各个子系统下,当子系统全量编译时会随之一起编译。

注意:该类系统应用是可以将源码通过IDE和SDK编译的,但是需要将工程适配为标准ArkTS工程。

  1. 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种方式查看:

  1. 通过https://developer.harmonyos.com/cn/docs/documentation/doc-releases-V3/release_notes-0000001057597449-V3?catalogVersion=V3查看。

  2. 通过新建默认工程里的hvigor版本来查看。

如何替换Full-SDK

想要开发系统应用,IDE默认下载Public-SDK无法提供相应的能力,需要使用到包含所有的能力的Full-SDK。以下为Full-SDK的下载使用方式:

  1. 进入CI平台http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist

  2. 依次选择需要的分支、日期、每日构建或者滚动构建

  3. 下载ohos-sdk-full(Mac M1芯片为mac-sdk-full)。当然,也可以选择自己编译系统配套的SDK。

  4. 替换使用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,不同的系统权限有对应的授权方式和等级。具体可以参考:

  1. 访问控制开发指导

  2. 应用权限列表

系统应用如何签名

系统应用需要通过OpenHarmony系统颁发的证书去进行签名才可以被识别为系统应用并能够使用系统权限接口,具体如何配置生成配置签名可以参考:

  1. OpenHarmony应用签名 - 系统应用签名
  2. OpenHarmony3.2release系统应用适配DevEcoStudio3.1Release

为了能够更快速的配置系统签名,可以参考以下步骤:

  1. 将附件里的signature.zip解压后,整个signature目录放到工程的根目录下。

  2. cd到signature目录下,修改UnsgnedReleasedProfileTemplate.json文件,将

    {
     ···
     "bundle-info":{
         ···
         "bundle-name":"com.winslei.winsleikit", // 修改为工程bundlename
         "apl":"system_core", // 固定填写
         "app-feature":"hos_system_app" // 固定填写
     },
     ···
    }
    

    按照注释里的要求修改。

  3. 在当前目录下,通过指令

    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可以重命名为工程相关的文件名。

  4. 在工程根目录的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"// 固定填写
         }
       }
     ],
    }
    }
    
  5. 依次点击File->Sync and Refresh Project即可配置好签名。

如何替换系统应用

系统应用源码在哪一文里,系统应用按照应用工程大概分为3类。

通过Ability区分的话,系统应用又会分为如下两类:

  1. 默认的UIAbility,如:Settings、Photos、Camera等,这类系统应用能够展示在桌面。
  2. ExtensionAbility,如:Launcher、SystemUI、Settingsdata等,这类系统应用有的创建了窗口从而能显示界面,而有的则属于无页面的常驻服务去提供对应的
    能力。

因此传统的hdc install命令以及IDE的自动安装都无法正常安装,这个时候,就需要用到系统应用的替换。

以Launcher为例,系统应用的替换步骤如下:

  1. 找到Launcher预置hap路径

    /system/app/com.ohos.launcher
    

    可以看到该路径下有2个hap(Launcher.hap、Launcher_Settings.hap)。

  2. 执行以下指令

    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应用签名 - 系统应用签名里的应用特权配置一文。

相关文件下载
signature.zip
7.27 MB
下载
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐