概述
文档环境
开发环境:Windows 11
DevEco Studio 版本:DevEco Studio 4.0 Release(4.0.0.600)
SDK 版本:4.0.10.15(Full SDK)
开发板型号:DAYU 200(RK3568)
系统版本:OpenHarmony-4.0-Release
示例工程:Applications_SystemUI
功能简介
OpenHarmony 开源社区提供了标准系统上的部分系统应用,如桌面、SystemUI、设置等,为开发者提供了构建标准系统应用的具体实例,这些应用支持在所有标准系统的设备上使用。本篇文档将介绍如何给这些系统应用进行签名,使它们可以正确的安装和运行在 OpenHarmony 系统上。本篇文档仅用于方便大家学习系统应用的开发和调试,不用做正式项目发布和商用使用。
系统应用目前包含如下:
1.Applications_Launcher:Launcher 作为系统人机交互的首要入口,提供应用图标的显示、点击启动、卸载应用,并提供桌面布局设置以及最近任务管理等功能。
2.Applications_SystemUI:SystemUI 应用是 OpenHarmony 中预置的系统应用,为用户提供系统相关信息展示及交互界面,包括系统状态、系统提示、系统提醒等,例如系统时间、电量信息。
3.Applications_Settings:设置应用是 OpenHarmony 系统中预置的系统应用,为用户提供设置系统属性的交互界面,例如设置系统时间,屏幕亮度等系统属性。
4.Applications_Camera:相机应用是 OpenHarmony 标准系统中预置的系统应用,为用户提供基础的相机拍摄功能,包括预览、拍照、摄像、缩略图显示、跳转相册、多机位协同。 Camera 采用纯 arkui-ts 语言开发。
5.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 中。
签名文件配置
1.DevEco Studio 4.0 Release 版本界面化配置签名时,秘钥不允许配置 8 位以下纯数字秘钥,而标准签名文件的秘钥为 123456 ,所以无法通过 DevEco Studio 界面进行签名的配置。仅能使用手动配置 build-profile.json5 文件方式,进行签名信息的配置。下载 material 包解压后放入 signature 目录中,material 文件夹中存放的为加密盐文件,此包将给予签名工具验证秘钥时使用。
2.配置工程根路径 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"
}
}],
构建安装验证
1.单击 Build >Build Hap(s)/APP(s) > Build APP(s) 构建 SystemUI 工程 HAP 包。
SystemUI 工程共有 7 个 HAP 包分别位于以下目录:
systemui_entry:
entry\phone\build\default\outputs\default\phone_entry-default-signed.hap
systemui_dialog:
product\default\dialog\build\default\outputs\default\default_dialog-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
2.使用"hdc file send {源地址} {目标地址}"命令分别把 HAP 包放入系统中替换当前 SystemUI 项目的安装包,SystemUI 安装包路径为 /system/app/com.ohos.systemui/。
推送文件前需先获取系统文件权限,执行"hdc shell mount -o remount,rw /"获取权限。
hdc 工具位于 SDK/{Version}/toolchains/目录中。
锁屏应用与 SystemUI 共包名,但属于单独工程,不在 SystemUI 工程中。
此处使用 Build APP(s) 而非 Build Hap(s) ,因为 Build APP(s) 会构建出 Release
类型包,与系统预制包类型一致,如果使用 Build Hap(s) 则需删除锁屏应用。
3.在 OpenHarmony 系统 Shell 命令行 中执行 rm -rf /data/* && reboot 系统会删除所有用户数据并重启,重启后系统重新安装全部系统应用。也可通过 bm instlal -p {HAP 包地址} -u 0 的方式单独安装某一个 HAP 包进行验证,不同系统应用在安装过程中存在差异。
4.在 OpenHarmony 系统 Shell 命令行 中使用 bm dump -n com.ohos.systemui | grep ‘“name”: "com.ohos.systemui.’ 或查看界面 SystemUI 是否启动,验证安装是否成功。
以下为一键替换安装脚本,方便大家学习使用,可保存为 shell 或 bat 脚本,在 SystemUI 根目录下执行:
set systemui_entry=entry\phone\build\default\outputs\default\phone_entry-default-signed.hap
set systemui_dialog=product\default\dialog\build\default\outputs\default\default_dialog-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% file send %systemui_entry% /system/app/com.ohos.systemui/SystemUI.hap
%hdc% file send %systemui_dialog% /system/app/com.ohos.systemui/SystemUI-SystemDialog.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
自动签名
修改权限文件
1.打开 OpenHarmony SDK 所在目录,可通过工程根路径 local.properties 文件或 DevEco Studio 菜单栏中单击 File > Settings > SDK > OpenHarmony 界面查看 。
2.在 OpenHarmony SDK 目录下,进入 {Version} > toolchains > lib 文件夹,打开 UnsgnedReleasedProfileTemplate.json 文件。
3.将 apl 配置项配置为 system_core ,app-feature 配置项配置为 ohos_system_app , Profile 文件的修改参考 HarmonyAppProvision 配置文件的说明。
配置工程签名
1.单击 File > Project Structure > Project > SigningConfigs 界面勾选 Automatically generate signature ,等待自动签名完成即可,单击 OK。
2.查看 build-profile.json5 配置信息,配置信息中增加自动签名生成的证书信息。
证书指纹获取
方式一(官方推荐)
1.证书存放在 HarmonyAppProvision 文件(修改权限文件中修改的 Profile 文件)的 distribution-certificate 字段下,新建 profile.cer 文件,将证书的内容拷贝到 profile.cer 文件中。
2.将 profile.cer 内容换行和去掉换行符。
3.使用 keytool 工具执行 “keytool -printcert -file profile.cer” 打印对应的证书指纹。
若提示以下信息,则未安装 Java 环境 或 keytool 工具 未加入环境变量中。可安装后再次尝试,或使用完整路径使用工具。
打印指纹信息:
4.处理证书指纹,使用 SHA256 证书信息,去掉冒号,最终结果为:
29D2B4EFFD0E6009778AF993EFBB270A6513420781BD37C5513B983C3253355C
方式二(个人推荐)
1.单击 Build > Build Hap(s)/APP(s) > Build Hap(s) 构建 SystemUI 工程 HAP 包。找到 SystemUI_Entry 模块构建的 HAP 包目录,位于工程路径 entry\phone\build\default\outputs\default\ 中。
2.把 HAP 推送至系统中。
hdc file send entry\phone\build\default\outputs\default\phone_entry-default-signed.hap /data/
3.在 DevEco Studio 中打开 Log 界面,选择 HiLog 过滤 “finger” 字符。
4.进入系统 Shell 命令行 ,设置 Hilog 等级。
hilog -b D
5.安装推送进系统的 SystemUI_Entry 构建的 HAP 包,此时会发现安装报错,是因为我们 HAP 包的指纹信息与系统中配置的不同导致,但此时我们目的为获取指纹信息,忽略报错信息。
bm install -p /data/phone_entry-default-signed.hap -u 0
6.查看 DevEco Studio 的 Log 界面,指纹信息已经被打印出来。
29D2B4EFFD0E6009778AF993EFBB270A6513420781BD37C5513B983C3253355C
应用特权配置
1.提取当前系统中的特权配置文件 install_list_capability.json ,文件位于/etc/app/ 中。
hdc file recv /etc/app/install_list_capability.json D:\
2.找到 install_list_capability.json 中 SystemUI 配置段。
3.替换 app_signature 为我们在证书指纹获取章节中获取到的指纹信息并保存。
4.将特权配置文件 install_list_capability.json 推送回系统中,覆盖系统配置。
hdc shell “mount -o remount,rw /” hdc file send
d:\install_list_capability.json /etc/app/install_list_capability.json
5.重启系统特权配置文件生效。
构建安装验证
同标准签名。
写在最后
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)文档用来跟着学习是非常有必要的。
这份鸿蒙(HarmonyOS NEXT)文档包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
希望这一份鸿蒙学习文档能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习文档
鸿蒙(HarmonyOS NEXT)5.0最新学习路线
有了路线图,怎么能没有学习文档呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习文档
《鸿蒙 (OpenHarmony)开发入门教学视频》
《鸿蒙生态应用开发V3.0白皮书》
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
●ArkTS语言
●安装DevEco Studio
●运用你的第一个ArkTS应用
●ArkUI声明式UI开发
.……
《鸿蒙开发进阶》
●Stage模型入门
●网络管理
●数据管理
●电话服务
●分布式应用开发
●通知与窗口管理
●多媒体技术
●安全技能
●任务管理
●WebGL
●国际化开发
●应用测试
●DFX面向未来设计
●鸿蒙系统移植和裁剪定制
……
《鸿蒙进阶实战》
●ArkTS实践
●UIAbility应用
●网络案例
……