概述
文档环境
开发环境: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_Launcher:Launcher 作为系统人机交互的首要入口,提供应用图标的显示、点击启动、卸载应用,并提供桌面布局设置以及最近任务管理等功能。
Applications_SystemUI:SystemUI应用是OpenHarmony中预置的系统应用,为用户提供系统相关信息展示及交互界面,包括系统状态、系统提示、系统提醒等,例如系统时间、电量信息。
Applications_Settings:设置应用是 OpenHarmony 系统中预置的系统应用,为用户提供设置系统属性的交互界面,例如设置系统时间,屏幕亮度等系统属性。
Applications_Camera:相机应用是OpenHarmony标准系统中预置的系统应用,为用户提供基础的相机拍摄功能,包括预览、拍照、摄像、缩略图显示、跳转相册、多机位协同。 Camera 采用纯 arkui-ts 语言开发。
Applications_Photos:图库是系统内置的可视资源访问应用,提供图片和视频的管理、浏览、显示、编辑操作等功能,并支持默认相册和用户相册管理。
除以上主要系统应用之外,还预置了一些简单的示例应用,如时钟、计算器、空气质量等,可供开发者参考学习。
系统应用签名
我们以相对较复杂的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中。
签名文件配置
- DevEco Studio 3.1 Beta1版本界面化配置签名时,秘钥不允许配置8位以下纯数字秘钥,而标准签名文件的秘钥为123456,所以无法通过DevEco Studio界面进行签名的配置。仅能使用手动配置build-profile.json5文件方式,进行签名信息的配置。下载material包解压后放入signature目录中,material文件夹中存放的为加密盐文件,此包将给予签名工具验证秘钥时使用。
- 配置工程根路径build-profile.json5文件,拷贝以下签名信息到配置文件中,其中storePassword和keyPassword为material包与秘钥加密生成的数据,keyAlias为固定值"OpenHarmony Application Release"。
"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"
}
}],
构建安装验证
- 单击Build > Build Hap(s)/APP(s) > Build Hap(s) 构建SystemUI工程HAP包。
SystemUI工程共有6个HAP包分别位于以下目录:
systemui_entry:
entry\phone\build\default\outputs\default\phone_entry-default-signed.hap
systemui_volumepanel:
product\default\volumepanel\build\default\outputs\default\default_volumepanel-phone_entry-default-signed.hap
systemui_statusbar:
product\phone\statusbar\build\default\outputs\default\phone_statusbar-phone_entry-default-signed.hap
systemui_notificationmanagement:
product\default\notificationmanagement\build\default\outputs\default\default_notificationmanagement-phone_entry-default-signed.hap
systemui_navigationbar:
product\default\navigationBar\build\default\outputs\default\default_navigationBar-phone_entry-default-signed.hap
systemui_dropdownpanel:
product\phone\dropdownpanel\build\default\outputs\default\phone_dropdownpanel-phone_entry-default-signed.hap
- 使用"hdc file send {源地址} {目标地址}"命令分别把HAP包放入系统中替换当前SystemUI项目的安装包,SystemUI安装包路径为 /system/app/com.ohos.systemui。
推送文件前需先获取系统文件权限,执行"hdc shell mount -o remount,rw /"获取权限。
hdc工具位于SDK/{Version}/toolchains/目录中。
在OpenHarmony系统Shell命令行中执行"rm -rf /data/* && reboot"系统会删除所有用户数据并重启,重启后系统重新安装全部系统应用。也可通过"bm instlal -p {HAP包地址} -u 0"的方式单独安装某一个HAP包进行验证,不同系统应用在安装过程中存在差异。
在OpenHarmony系统Shell命令行中使用"bm dump -n com.ohos.systemui | grep name"或查看界面SystemUI是否启动,验证安装是否成功。
以下为一键替换安装脚本,方便大家学习使用,可保存为shell或bat脚本,在SystemUI根目录下执行:
set systemui_entry=entry\phone\build\default\outputs\default\phone_entry-default-signed.hap
set systemui_volumepanel=product\default\volumepanel\build\default\outputs\default\default_volumepanel-phone_entry-default-signed.hap
set systemui_statusbar=product\phone\statusbar\build\default\outputs\default\phone_statusbar-phone_entry-default-signed.hap
set systemui_notificationmanagement=product\default\notificationmanagement\build\default\outputs\default\default_notificationmanagement-phone_entry-default-signed.hap
set systemui_navigationbar=product\default\navigationBar\build\default\outputs\default\default_navigationBar-phone_entry-default-signed.hap
set systemui_dropdownpanel=product\phone\dropdownpanel\build\default\outputs\default\phone_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
自动签名
修改权限文件
- 打开OpenHarmony SDK所在目录,可通过工程根路径local.properties文件或DevEco Studio菜单栏中单击File > Settings > SDK > OpenHarmony 界面查看 。
- 在OpenHarmony SDK目录下,进入 {Version} > toolchains > lib文件夹,打开UnsgnedReleasedProfileTemplate.json文件。
- 将apl配置项配置为 system_core,app-feature配置项配置为ohos_system_app,Profile文件的修改参考HarmonyAppProvision配置文件的说明。
配置工程签名
- 单击 File > Project Structure > Project > SigningConfigs 界面勾选Automatically generate signature,等待自动签名完成即可,单击OK。
- 查看build-profile.json5配置信息,配置信息中增加自动签名生成的证书信息。
证书指纹获取
方式一(官方推荐)
- 证书存放在HarmonyAppProvision文件(修改权限文件中修改的Profile文件)的distribution-certificate字段下,新建profile.cer文件,将证书的内容拷贝到profile.cer文件中。
- 将profile.cer内容换行和去掉换行符。
- 使用keytool工具执行"keytool -printcert -file profile.cer"打印对应的证书指纹。
若提示以下信息,则未安装Java环境或keytool工具未加入环境变量中。可安装后再次尝试,或使用完整路径使用工具。
打印指纹信息:
- 处理证书指纹,使用SHA256证书信息,去掉冒号,最终结果为:
A08D9DAB5FF3012158CDAA68D45ACAEE49F848E05065ED1CEF29A9B2724E3FA6
方式二(个人推荐)
- 单击Build > Build Hap(s)/APP(s) > Build Hap(s) 构建SystemUI工程HAP包。找到SystemUI_Entry模块构建的HAP包目录,位于工程路径\entry\phone\build\default\outputs\default\ 中。
- 把HAP推送至系统中。
hdc file send entry\phone\build\default\outputs\default\phone_entry-default-signed.hap /data/
- 在DevEco Studio中打开Log 界面,选择HiLog过滤"finger"字符。
- 进入系统Shell命令行,设置Hilog等级。
hilog -b D
- 安装推送进系统的SystemUI_Entry构建的HAP包,此时会发现安装报错,是因为我们HAP包的指纹信息与系统中配置的不同导致,但此时我们目的为获取指纹信息,忽略报错信息。
bm install -p /data/phone_entry-default-signed.hap -u 0
- 查看DevEco Studio的Log界面,指纹信息已经被打印出来。
A08D9DAB5FF3012158CDAA68D45ACAEE49F848E05065ED1CEF29A9B2724E3FA6
应用特权配置
- 提取当前系统中的特权配置文件install_list_capability.json,文件位于/etc/app/中。
hdc file recv /etc/app/install_list_capability.json D:\
- 找到install_list_capability.json中SystemUI配置段。
- 替换app_signature为我们在证书指纹获取章节中获取到的指纹信息并保存。
- 将特权配置文件install_list_capability.json推送回系统中,覆盖系统配置。
hdc shell "mount -o remount,rw /"
hdc file send d:\install_list_capability.json /etc/app/install_list_capability.json
- 重启系统特权配置文件生效。
构建安装验证
同标准签名。
参考文档
OpenHarmony Gitee Docs - 应用特权配置指南
版权归原作者 TiZizzz 所有, 如有侵权,请联系我们删除。