OpenHarmony應(yīng)用簽名 - 系統(tǒng)應(yīng)用簽名
??想了解更多關(guān)于開源的內(nèi)容,請?jiān)L問:??
概述
文檔環(huán)境
開發(fā)環(huán)境:Windows 11
DevEco Studio 版本:DevEco Studio 3.1 Beta1(3.1.0.200)
SDK 版本:3.2.10.8(Full SDK)
開發(fā)板型號(hào):DAYU 200
系統(tǒng)版本:OpenHarmony 3.2 Beta5
示例工程:??Applications_SystemUI (OpenHarmony 3.2 Beta5分支)???
功能簡介
OpenHarmony開源社區(qū)提供了標(biāo)準(zhǔn)系統(tǒng)上的部分系統(tǒng)應(yīng)用,如桌面、SystemUI、設(shè)置等,為開發(fā)者提供了構(gòu)建標(biāo)準(zhǔn)系統(tǒng)應(yīng)用的具體實(shí)例,這些應(yīng)用支持在所有標(biāo)準(zhǔn)系統(tǒng)的設(shè)備上使用。本篇文檔將介紹如何給這些系統(tǒng)應(yīng)用進(jìn)行簽名,使它們可以正確的安裝和運(yùn)行在OpenHarmony系統(tǒng)上。本篇文檔僅用于方便大家學(xué)習(xí)系統(tǒng)應(yīng)用的開發(fā)和調(diào)試,不用做正式項(xiàng)目發(fā)布和商用使用。
系統(tǒng)應(yīng)用目前包含如下:
- ??Applications_Launcher??:Launcher 作為系統(tǒng)人機(jī)交互的首要入口,提供應(yīng)用圖標(biāo)的顯示、點(diǎn)擊啟動(dòng)、卸載應(yīng)用,并提供桌面布局設(shè)置以及最近任務(wù)管理等功能。
- ??Applications_SystemUI??:SystemUI應(yīng)用是OpenHarmony中預(yù)置的系統(tǒng)應(yīng)用,為用戶提供系統(tǒng)相關(guān)信息展示及交互界面,包括系統(tǒng)狀態(tài)、系統(tǒng)提示、系統(tǒng)提醒等,例如系統(tǒng)時(shí)間、電量信息。
- ??Applications_Settings??:設(shè)置應(yīng)用是 OpenHarmony 系統(tǒng)中預(yù)置的系統(tǒng)應(yīng)用,為用戶提供設(shè)置系統(tǒng)屬性的交互界面,例如設(shè)置系統(tǒng)時(shí)間,屏幕亮度等系統(tǒng)屬性。
- ??Applications_Camera??:相機(jī)應(yīng)用是OpenHarmony標(biāo)準(zhǔn)系統(tǒng)中預(yù)置的系統(tǒng)應(yīng)用,為用戶提供基礎(chǔ)的相機(jī)拍攝功能,包括預(yù)覽、拍照、攝像、縮略圖顯示、跳轉(zhuǎn)相冊、多機(jī)位協(xié)同。 Camera 采用純 arkui-ts 語言開發(fā)。
- ??Applications_Photos??:圖庫是系統(tǒng)內(nèi)置的可視資源訪問應(yīng)用,提供圖片和視頻的管理、瀏覽、顯示、編輯操作等功能,并支持默認(rèn)相冊和用戶相冊管理。
除以上主要系統(tǒng)應(yīng)用之外,還預(yù)置了一些簡單的示例應(yīng)用,如時(shí)鐘、計(jì)算器、空氣質(zhì)量等,可供開發(fā)者參考學(xué)習(xí)。
系統(tǒng)應(yīng)用簽名
我們以相對較復(fù)雜的 Applications_SystemUI 項(xiàng)目為例,克隆 SystemUI 項(xiàng)目,使用 DevEco Studio 打開工程,查看當(dāng)前工程的簽名配置 build-profile.json5 。
當(dāng)前默認(rèn)工程是未配置簽名的狀態(tài),所構(gòu)建的包均為 unsigned 標(biāo)記的HAP包,無法安裝到 OpenHarmony 系統(tǒng)中,下面我們分別使用 標(biāo)準(zhǔn)簽名 和 自動(dòng)簽名 ,兩種方式給 SystemUI 工程配置簽名。
標(biāo)準(zhǔn)簽名:配置簡單,適用于工程中提供p7b簽名文件的工程。
自動(dòng)簽名:配置較復(fù)雜,適用于工程中未提供p7b簽名文件或p7b簽名文件與系統(tǒng)配置不匹配的情況。
除以上兩種方式外還可使用手動(dòng)簽名的方式生成簽名文件給應(yīng)用簽名,此種方式更為復(fù)雜,但具有較高的靈活性,不在此篇文檔中進(jìn)行介紹。
標(biāo)準(zhǔn)簽名
簽名文件獲取
拷貝 OpenHarmony 標(biāo)準(zhǔn)版工程簽名文件到 SystemUI 工程的 signature 目錄。打開??developtools_hapsigner??倉庫,進(jìn)入 dist 目錄,點(diǎn)擊下載??OpenHarmony.p12???和??OpenHarmonyApplication.pem??(pem文件若無法直接下載,可直接在目錄中創(chuàng)建文件然后將內(nèi)容拷貝到文件中)。
把下載好的文件放入工程目錄的 signature 中。
簽名文件配置
- DevEco Studio 3.1 Beta1 版本界面化配置簽名時(shí),秘鑰不允許配置8位以下純數(shù)字秘鑰,而標(biāo)準(zhǔn)簽名文件的秘鑰為123456 ,所以無法通過DevEco Studio 界面進(jìn)行簽名的配置。僅能使用手動(dòng)配置build-profile.json5 文件方式,進(jìn)行簽名信息的配置。下載??material包??解壓后放入signature 目錄中,material 文件夾中存放的為加密鹽文件,此包將給予簽名工具驗(yàn)證秘鑰時(shí)使用。
- 配置工程根路徑build-profile.json5 文件,拷貝以下簽名信息到配置文件中,其中storePassword 和keyPassword 為material 包與秘鑰加密生成的數(shù)據(jù),keyAlias 為固定值"OpenHarmony Application Release"。
構(gòu)建安裝驗(yàn)證
- 單擊Build >Build Hap(s)/APP(s) > Build Hap(s) 構(gòu)建SystemUI 工程HAP包。
SystemUI 工程共有6個(gè)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 {源地址} {目標(biāo)地址}"命令分別把HAP包放入系統(tǒng)中替換當(dāng)前SystemUI 項(xiàng)目的安裝包,SystemUI 安裝包路徑為/system/app/com.ohos.systemui/。
推送文件前需先獲取系統(tǒng)文件權(quán)限,執(zhí)行"hdc shell mount -o remount,rw /"獲取權(quán)限。
hdc工具位于SDK/{Version}/toolchains/目錄中。
- 在OpenHarmony系統(tǒng)Shell命令行 中執(zhí)行"rm -rf /data/* && reboot"系統(tǒng)會(huì)刪除所有用戶數(shù)據(jù)并重啟,重啟后系統(tǒng)重新安裝全部系統(tǒng)應(yīng)用。也可通過"bm instlal -p {HAP包地址} -u 0"的方式單獨(dú)安裝某一個(gè)HAP包進(jìn)行驗(yàn)證,不同系統(tǒng)應(yīng)用在安裝過程中存在差異。
- 在OpenHarmony系統(tǒng)Shell命令行 中使用"bm dump -n com.ohos.systemui | grep name"或查看界面SystemUI 是否啟動(dòng),驗(yàn)證安裝是否成功。
以下為一鍵替換安裝腳本,方便大家學(xué)習(xí)使用,可保存為 shell 或 bat 腳本,在 SystemUI 根目錄下執(zhí)行:
自動(dòng)簽名
修改權(quán)限文件
- 打開OpenHarmony SDK 所在目錄,可通過工程根路徑local.properties 文件或DevEco Studio 菜單欄中單擊File > Settings > SDK > OpenHarmony 界面查看 。
- 在OpenHarmony SDK 目錄下,進(jìn)入{Version} > toolchains > lib 文件夾,打開 UnsgnedReleasedProfileTemplate.json 文件。
- 將apl 配置項(xiàng)配置為system_core ,app-feature 配置項(xiàng)配置為ohos_system_app , Profile 文件的修改參考??HarmonyAppProvision配置文件的說明??。
配置工程簽名
- 單擊File > Project Structure > Project > SigningConfigs 界面勾選Automatically generate signature ,等待自動(dòng)簽名完成即可,單擊OK。
- 查看build-profile.json5 配置信息,配置信息中增加自動(dòng)簽名生成的證書信息。
證書指紋獲取
方式一(官方推薦)
- 證書存放在HarmonyAppProvision 文件(修改權(quán)限文件中修改的Profile文件)的distribution-certificate 字段下,新建profile.cer 文件,將證書的內(nèi)容拷貝到profile.cer 文件中。
- 將profile.cer 內(nèi)容換行和去掉換行符。
- 使用keytool 工具執(zhí)行 "keytool -printcert -file profile.cer" 打印對應(yīng)的證書指紋。
若提示以下信息,則未安裝 Java環(huán)境 或 keytool工具 未加入環(huán)境變量中??砂惭b后再次嘗試,或使用完整路徑使用工具。
打印指紋信息:
- 處理證書指紋,使用SHA256證書信息,去掉冒號(hào),最終結(jié)果為:
A08D9DAB5FF3012158CDAA68D45ACAEE49F848E05065ED1CEF29A9B2724E3FA6
方式二(個(gè)人推薦)
- 單擊Build > Build Hap(s)/APP(s) > Build Hap(s) 構(gòu)建SystemUI 工程HAP包。找到 SystemUI_Entry模塊構(gòu)建的HAP包目錄,位于工程路徑 \entry\phone\build\default\outputs\default\ 中。
- 把HAP推送至系統(tǒng)中。
hdc file send entry\phone\build\default\outputs\default\phone_entry-default-signed.hap /data/
- 在DevEco Studio 中打開Log 界面,選擇HiLog 過濾 "finger" 字符。
- 進(jìn)入系統(tǒng)Shell命令行 ,設(shè)置Hilog 等級(jí)。
hilog -b D
- 安裝推送進(jìn)系統(tǒng)的SystemUI_Entry 構(gòu)建的HAP包,此時(shí)會(huì)發(fā)現(xiàn)安裝報(bào)錯(cuò),是因?yàn)槲覀僅AP包的指紋信息與系統(tǒng)中配置的不同導(dǎo)致,但此時(shí)我們目的為獲取指紋信息,忽略報(bào)錯(cuò)信息。
bm install -p /data/phone_entry-default-signed.hap -u 0
- 查看DevEco Studio 的Log 界面,指紋信息已經(jīng)被打印出來。
A08D9DAB5FF3012158CDAA68D45ACAEE49F848E05065ED1CEF29A9B2724E3FA6
應(yīng)用特權(quán)配置
- 提取當(dāng)前系統(tǒng)中的特權(quán)配置文件install_list_capability.json ,文件位于/etc/app/ 中。
hdc file recv /etc/app/install_list_capability.json D:\
- 找到install_list_capability.json 中SystemUI 配置段。
- 替換app_signature為我們在證書指紋獲取章節(jié)中獲取到的指紋信息并保存。
- 將特權(quán)配置文件install_list_capability.json 推送回系統(tǒng)中,覆蓋系統(tǒng)配置。
hdc shell "mount -o remount,rw /"
hdc file send d:\install_list_capability.json /etc/app/install_list_capability.json
- 重啟系統(tǒng)特權(quán)配置文件生效。
構(gòu)建安裝驗(yàn)證
同標(biāo)準(zhǔn)簽名。
文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載:
https://ost.51cto.com/resource/2546。