开发环境:windows 11
DevEco Studio 版本:DevEco Studio 3.1 Beta1(3.1.0.200)
SDK 版本:3.2.10.8(Full SDK)
开发板型号:DAYU 200
系统版本:OpenHarmony 3.2 Beta5
示例工程:Applications_SystemUI (OpenHarmony 3.2 Beta5分支)
OpenHarmony开源社区提供了标准系统上的部分系统应用,如桌面、SystemUI、设置等,为开发者提供了构建标准系统应用的具体实例,这些应用支持在所有标准系统的设备上使用。本篇文档将介绍如何给这些系统应用进行签名,使它们可以正确的安装和运行在OpenHarmony系统上。本篇文档仅用于方便大家学习系统应用的开发和调试,不用做正式项目发布和商用使用。
系统应用目前包含如下:
除以上主要系统应用之外,还预置了一些简单的示例应用,如时钟、计算器、空气质量等,可供开发者参考学习。
我们以相对较复杂的 Applications_SystemUI 项目为例,克隆 SystemUI 项目,使用 DevEco Studio 打开工程,查看当前工程的签名配置 build-profile.json5 。
当前默认工程是未配置签名的状态,所构建的包均为 unsigned 标记的HAP包,无法安装到 OpenHarmony 系统中,下面我们分别使用 标准签名 和 自动签名 ,两种方式给 SystemUI 工程配置签名。
标准签名:配置简单,适用于工程中提供p7b签名文件的工程。
自动签名:配置较复杂,适用于工程中未提供p7b签名文件或p7b签名文件与系统配置不匹配的情况。
除以上两种方式外还可使用手动签名的方式生成签名文件给应用签名,此种方式更为复杂,但具有较高的灵活性,不在此篇文档中进行介绍。
拷贝 OpenHarmony 标准版工程签名文件到 SystemUI 工程的 signature 目录。打开developtools_hapsigner仓库,进入 dist 目录,点击下载OpenHarmony.p12和OpenHarmonyApplication.pem(pem文件若无法直接下载,可直接在目录中创建文件然后将内容拷贝到文件中)。
把下载好的文件放入工程目录的 signature 中。
"signingConfigs": [{
"name": "release",
"material": {
"storePassword": "00000016D9DCF063F0FC4BBD0E7FE1E3B06A67C07BECE1BDD4E2A3EFDAE20F890810EC02AA2A",
"certpath": "signature/OpenHarmonyApplication.pem",
"keyAlias": "OpenHarmony Application Release",
"keyPassword": "00000016FD3897FD4C46940ED39FFC652872B7B18BEDCCA07400A6EBEE307C9C41B96DB6B64D",
"profile": "signature/systemui.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "signature/OpenHarmony.p12"
}
}],
SystemUI 工程共有6个HAP包分别位于以下目录:
systemui_entry:
entryphonebuilddefaultoutputsdefaultphone_entry-default-signed.hap
systemui_volumepanel:
productdefaultvolumepanelbuilddefaultoutputsdefaultdefault_volumepanel-phone_entry-default-signed.hap
systemui_statusbar:
productphonestatusbarbuilddefaultoutputsdefaultphone_statusbar-phone_entry-default-signed.hap
systemui_notificationmanagement:
productdefaultnotificationmanagementbuilddefaultoutputsdefaultdefault_notificationmanagement-phone_entry-default-signed.hap
systemui_navigationbar:
productdefaultnavigationBarbuilddefaultoutputsdefaultdefault_navigationBar-phone_entry-default-signed.hap
systemui_dropdownpanel:
productphonedropdownpanelbuilddefaultoutputsdefaultphone_dropdownpanel-phone_entry-default-signed.hap
推送文件前需先获取系统文件权限,执行"hdc shell mount -o remount,rw /"获取权限。
hdc工具位于SDK/{Version}/toolchains/目录中。
以下为一键替换安装脚本,方便大家学习使用,可保存为 shell 或 bat 脚本,在 SystemUI 根目录下执行:
set systemui_entry=entryphonebuilddefaultoutputsdefaultphone_entry-default-signed.hap
set systemui_volumepanel=productdefaultvolumepanelbuilddefaultoutputsdefaultdefault_volumepanel-phone_entry-default-signed.hap
set systemui_statusbar=productphonestatusbarbuilddefaultoutputsdefaultphone_statusbar-phone_entry-default-signed.hap
set systemui_notificationmanagement=productdefaultnotificationmanagementbuilddefaultoutputsdefaultdefault_notificationmanagement-phone_entry-default-signed.hap
set systemui_navigationbar=productdefaultnavigationBarbuilddefaultoutputsdefaultdefault_navigationBar-phone_entry-default-signed.hap
set systemui_dropdownpanel=productphonedropdownpanelbuilddefaultoutputsdefaultphone_dropdownpanel-phone_entry-default-signed.hap
set hdc=hdc
%hdc% shell mount -o remount,rw /
%hdc% shell rm -rf /data/*
%hdc% shell rm -rf /system/app/com.ohos.systemui/*
%hdc% file send %systemui_entry% /system/app/com.ohos.systemui/SystemUI.hap
%hdc% file send %systemui_volumepanel% /system/app/com.ohos.systemui/SystemUI-VolumePanel.hap
%hdc% file send %systemui_statusbar% /system/app/com.ohos.systemui/SystemUI-StatusBar.hap
%hdc% file send %systemui_notificationmanagement% /system/app/com.ohos.systemui/SystemUI-NotificationManagement.hap
%hdc% file send %systemui_navigationbar% /system/app/com.ohos.systemui/SystemUI-NavigationBar.hap
%hdc% file send %systemui_dropdownpanel% /system/app/com.ohos.systemui/SystemUI-DropdownPanel.hap
%hdc% shell reboot
若提示以下信息,则未安装 JAVA环境 或 keytool工具 未加入环境变量中。可安装后再次尝试,或使用完整路径使用工具。
打印指纹信息:
A08D9DAB5FF3012158CDAA68D45ACAEE49F848E05065ED1CEF29A9B2724E3FA6
hdc file send entryphonebuilddefaultoutputsdefaultphone_entry-default-signed.hap /data/
hilog -b D
bm install -p /data/phone_entry-default-signed.hap -u 0
A08D9DAB5FF3012158CDAA68D45ACAEE49F848E05065ED1CEF29A9B2724E3FA6
hdc file recv /etc/app/install_list_capability.json D:
hdc shell "mount -o remount,rw /"
hdc file send d:install_list_capability.json /etc/app/install_list_capability.json
同标准签名。
文章相关附件可以点击下面的原文链接前往下载:
https://ost.51cto.com/resource/2546。