一、環(huán)境
IDE版本:DevEco Studio 3.1Release(3.1.0.500)
SDK版本:3.2.14.5 Full-SDK
設(shè)備:RK3568 3.2release(3.2.15.2)
?
二、實現(xiàn)步驟
1、gitee下載系統(tǒng)應(yīng)用代碼
鏈接:https://gitee.com/openharmony/applications_systemui/tree/OpenHarmony-3.2-Release/
選擇OpenHarmony-3.2-Release分支,點擊克隆/下載 --> 下載ZIP;
注意:下載ZIP可以直接下載OpenHarmony-3.2-Release分支的,如果是復(fù)制鏈接在本地文件夾中通過git clone命令下載的話,下載的就是master分支,需要自己手動切到OpenHarmony-3.2-Release分支,因為復(fù)制的鏈接就是master分支,而不是OpenHarmony-3.2-Release分支。
?
2、適配
Deveco打開下載好的systemui工程,會自動提示是否要升級工程
點擊Start automatic configuration migration->Migrate->OK->Finish
?
Deveco報錯ERROR: 'entryModules' must be configured for a feature module.必須要在build-profile.json5文件中設(shè)置“entryModules”
?添加下面的代碼到D:\acode\applications_systemui-OpenHarmony-3.2-Release\product\default\navigationBar\build-profile.json5文件中,并點擊右上角的Sync Now同步工程
"entryModules": [
"phone_entry"
]
這里的"entryModules"的值其實就是根目錄下build-profile.json5文件中的modules的name值
在這里要說一下,要將根目錄下build-profile.json5文件中有關(guān)pc的配置都注釋掉,因為現(xiàn)在演示的是phone的systemui,關(guān)于pc的配置一共有兩個地方,注釋掉后點擊Sync Now同步工程; ?
?要在product/default目錄下的notificationmanagement、volumepanel目錄中的build-profile.json5文件和product/phone目錄下的dropdownpanel、statusbar目錄中的build-profile.json5文件中添加上面相同的代碼,并點擊右上角的Sync Now同步工程,一共需要修改5個build-profile.json5文件
"entryModules": [
"phone_entry"
]
?
3、下載缺失的簽名文件
部分系統(tǒng)應(yīng)用的signature目錄下只有p7b文件,缺少material目錄、OpenHarmony.p12文件、OpenHarmonyApplication.cer文件,例如:systemui;這種情況下,可以下載launcher(鏈接:https://gitee.com/openharmony/applications_launcher/tree/OpenHarmony-3.2-Release/signature)中的OpenHarmony.p12文件、OpenHarmonyApplication.cer文件使用,launcher下的material目錄我這邊用了會報錯(當(dāng)然你們也可以試試launcher下的material目錄能不能用),下面提供另外一個下載位置(鏈接: https://ost.51cto.com/resource/2546?login=from_csdn)
launcher的signature目錄
?systemui的signature目錄
?material目錄另一個下載路徑,下載material目錄并解壓
?
4、簽名
先進(jìn)行自動簽名,點擊File -> Project Structure -> Signing Configs,勾選Automatically generate signature,點擊Apply、OK,點擊Sync Now同步工程;
在根目錄的build-profile.json5文件中生成了signingConfigs簽名 ?
將第3步下載的material目錄、OpenHarmony.p12文件、OpenHarmonyApplication.cer文件拷貝到signature目錄下,將根目錄的build-profile.json5下的"signingConfigs"修改為下面的內(nèi)容,并將"products"的"signingConfig"的值修改成"default",點擊Sync Now同步工程; ?
"products": [
{
"name": "default",
"signingConfig": "default"
}
],
"signingConfigs": [
{
"name": "default",
"material": {
"storePassword": "00000016D9DCF063F0FC4BBD0E7FE1E3B06A67C07BECE1BDD4E2A3EFDAE20F890810EC02AA2A",
"certpath": "signature/OpenHarmonyApplication.cer",
"keyAlias": "OpenHarmony Application Release",
"keyPassword": "00000016FD3897FD4C46940ED39FFC652872B7B18BEDCCA07400A6EBEE307C9C41B96DB6B64D",
"profile": "signature/systemui.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "signature/OpenHarmony.p12"
}
}
]
?
5、編譯安裝
點擊File -> Sync and Refresh Project刷新項目,點擊Build -> Build Hap(s)/APP(s) -> Build APP(s)構(gòu)建SystemUI工程HAP包
?
點擊Terminal,輸入hdc shell,進(jìn)入/system/app/com.ohos.systemui,有7個hap文件;
但是systemui下面只有6個hap包,位置如下圖所示,缺少鎖屏的SystemUI-ScreenLock.hap,需要在gitee下載applications_screenlock自己編譯后放到systemui工程的目錄下,下載鏈接: ?https://gitee.com/openharmony/applications_screenlock/tree/OpenHarmony-3.2-Release/
?
6個hap包位置
?
?gitee上的applications_screenlock
?
applications_screenlock簽名編譯,和上面systemui一樣配置簽名,然后編譯Build -> Build Hap(s)/APP(s) -> Build APP(s),然后把編譯出來的hap包(如下圖所示的entry-default-signed.hap)復(fù)制改名放到systemui目錄下
?
?
新建test_install.bat文件并執(zhí)行,終端輸入".\test_install.bat"執(zhí)行自動化腳本
test_install.bat
hdc shell mount -o rw,remount /
hdc shell rm -rf /system/app/com.ohos.systemui/*
hdc file send entry\phone\build\default\outputs\default\phone_entry-default-signed.hap /system/app/com.ohos.systemui/SystemUI.hap
hdc file send product\default\navigationBar\build\default\outputs\default\default_navigationBar-phone_entry-default-signed.hap /system/app/com.ohos.systemui/SystemUI-NavigationBar.hap
hdc file send product\default\notificationmanagement\build\default\outputs\default\default_notificationmanagement-phone_entry-default-signed.hap /system/app/com.ohos.systemui/SystemUI-NotificationManagement.hap
hdc file send product\default\volumepanel\build\default\outputs\default\default_volumepanel-phone_entry-default-signed.hap /system/app/com.ohos.systemui/SystemUI-VolumePanel.hap
hdc file send product\phone\dropdownpanel\build\default\outputs\default\phone_dropdownpanel-phone_entry-default-signed.hap /system/app/com.ohos.systemui/SystemUI-DropdownPanel.hap
hdc file send product\phone\statusbar\build\default\outputs\default\phone_statusbar-phone_entry-default-signed.hap /system/app/com.ohos.systemui/SystemUI-StatusBar.hap
hdc file send SystemUI-ScreenLock.hap /system/app/com.ohos.systemui/SystemUI-ScreenLock.hap
hdc shell rm -rf /data/*
hdc shell reboot
hdc shell mount -o rw,remount / //表示獲取讀寫權(quán)限
hdc shell rm -rf /system/app/com.ohos.systemui/* //刪除7個hap包
hdc file send (local_file_path) (mobile_path) //上傳替換文件到設(shè)備,local_file_path是systemui中的文件,mobile_path是開發(fā)板上面的文件,文件的位置如上圖
hdc shell rm -rf /data/* //刪除開發(fā)板下的data數(shù)據(jù)
hdc shell reboot //重啟
?
終端輸入".\test_install.bat"執(zhí)行自動化腳本,等待重啟,重啟之后就成功了。
?
?
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。