OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹
想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:
前言
OpenHarmony系統(tǒng)應(yīng)用是指預(yù)裝在OpenHarmony操作系統(tǒng)中的應(yīng)用程序,也稱為系統(tǒng)應(yīng)用。這些應(yīng)用程序通常由操作系統(tǒng)開發(fā)者開發(fā),包括系統(tǒng)設(shè)置、電話、短信、瀏覽器、相機(jī)、音樂、視頻等常用應(yīng)用程序。這些應(yīng)用程序通常具有更高的權(quán)限和更深入的系統(tǒng)集成,可以訪問更多的系統(tǒng)資源和功能。
自定義系統(tǒng)應(yīng)用是指用戶自己開發(fā)或定制的OpenHarmony系統(tǒng)應(yīng)用程序。用戶可以根據(jù)自己的需求和喜好,開發(fā)或定制自己的系統(tǒng)應(yīng)用程序,如主題、鎖屏、桌面、通知欄等。這些應(yīng)用程序通常具有更高的個(gè)性化和定制化,可以滿足用戶更多的需求和偏好。
本文從文件準(zhǔn)備、生成簽名包、系統(tǒng)集成幾個(gè)方面,介紹如何在OpenHarmony系統(tǒng)上開發(fā)自定義的系統(tǒng)應(yīng)用,供開發(fā)者學(xué)習(xí)參考。
1、文件準(zhǔn)備
(1)未簽名應(yīng)用包
選模板
在DevEco Studio中選擇自定義應(yīng)用所需的模板。
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
然后選擇自定義應(yīng)用所需的應(yīng)用模型、SDK。
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
最后按照模板引導(dǎo)創(chuàng)建ArkTS工程。
編譯包
工程創(chuàng)建成功后,啟動(dòng)編譯選項(xiàng),生成未簽名的hap包。
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
編譯成功后,在工程目錄\entry\build\default\outputs\default路徑下,可見生成的未簽名hap包。
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
(2)簽名所需文件
為了保證OpenHarmony應(yīng)用的完整性和來源可靠,在應(yīng)用構(gòu)建時(shí)需要對(duì)應(yīng)用進(jìn)行簽名。經(jīng)過簽名的應(yīng)用才能在真機(jī)設(shè)備上安裝、運(yùn)行、和調(diào)試。
本文介紹的是使用簽名工具以命令行方式進(jìn)行Hap包簽名的方法,簽名所需文件如下:
- 簽名密鑰庫文件:OpenHarmony.p12
- Profile簽名證書:OpenHarmonyProfileRelease.pem、OpenHarmonyProfileDebug.pem
- Profile模板文件:UnsgnedReleasedProfileTemplate.json、UnsgnedDebugProfileTemplate.json
- 簽名工具:hap-sign-tool.jar
以上文件可在SDK中會(huì)獲得。
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
簽名工具工具詳細(xì)說明。
2、生成簽名應(yīng)用包
(1)修改profile
app1-profile-release.json中會(huì)定義當(dāng)前應(yīng)用名稱"bundle-name"、應(yīng)用的權(quán)限等級(jí)"apl"。
權(quán)限等級(jí)有normal、system_basic、system_core三種,默認(rèn)等級(jí)為normal,對(duì)于系統(tǒng)應(yīng)用的話,需要修改權(quán)限,此處改為system_core。
應(yīng)用名稱改為用戶自定義的包名即可,此處改為com.example.zjxapp。
{
"version-name": "2.0.0",
"version-code": 2,
"app-distribution-type": "os_integration",
"uuid": "5027b99e-5f9e-465d-9508-a9e0134ffe18",
"validity": {
"not-before": 1594865258,
"not-after": 1689473258
},
"type": "release",
"bundle-info": {
"developer-id": "OpenHarmony",
"distribution-certificate": "-----BEGIN CERTIFICATE-----\nMIICFTCCAZmgAwIBAgIEFRGSbjAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\nMRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\nbTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjIwNDAy\nMDY1OTA4WhcNMzIwMzMwMDY1OTA4WjBKMRUwEwYDVQQDDAxpZGVfZGVtb19hcHAx\nDTALBgNVBAsTBFVuaXQxFTATBgNVBAoTDE9yZ2FuaXphdGlvbjELMAkGA1UEBhMC\nQ04wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGc9ftjM6ncln8AqF0AhTsyphc\nhmKWktwgsZwisqy7X+clViYnbw9WpRRoxJYeZ6GL3MUiOHiM9UDpwOmjdYPOo1Iw\nUDAdBgNVHQ4EFgQUG91q9tKNxBRQgQFzfuSnhrP/mKcwDgYDVR0PAQH/BAQDAgeA\nMB8GA1UdIwQYMBaAFNuGtyIW1QuhS7fdJXu58QV9oi1HMAwGCCqGSM49BAMDBQAD\naAAwZQIweNK78cfmJdBVSMowMukZoIevBFNRNVYaUxxWpbn+X2Y9x8STmxqHhPj6\np0wKd9qnAjEAuU/AuW9NO04joHCJnM0I2PkDWJKw+eJiVc3ggLAOJTE9TfXyN0JM\nUdjqqzpQQj4u\n-----END CERTIFICATE-----\n",
"bundle-name": "com.example.zjxapp",
"apl": "system_core",
"app-feature": "hos_system_app"
},
"acls": {
"allowed-acls": [
""
]
},
"permissions": {
"restricted-permissions": [
]
},
"issuer": "pki_internal"
}
(2)簽名Profile
Profile簽名流程如下圖:
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
由圖可見,根據(jù)sdk中的p12文件、2.1章節(jié)的profile文件,可以生成簽名的Profile文件,文件格式為*.p7b;命令如下
java -jar hap-sign-tool.jar sign-profile -keyAlias "OpenHarmony Application Release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "OpenHarmonyApplication.pem" -inFile "app1-profile-release.json" -keystoreFile "OpenHarmony.p12" -outFile "profile.p7b" -keyPwd "123456" -keystorePwd "123456"
(3)簽名應(yīng)用
應(yīng)用簽名流程如下圖:
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
由圖可見,根據(jù)1.1中未簽名的應(yīng)用包以及2.2簽名的Profile文件,可以生成簽名的應(yīng)用,命令如下
java -jar hap-sign-tool.jar sign-app -keyAlias "OpenHarmony Application Release" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "OpenHarmonyApplication.pem" -profileFile "profile.p7b" -inFile "entry-default-unsigned.hap" -keystoreFile "OpenHarmony.p12" -outFile "zjxapp.hap" -keyPwd "123456" -keystorePwd "123456"
注意:entry-default-unsigned.hap為你未簽名的hap包,zjxapp.hap為簽名后生成的包
3、系統(tǒng)集成
(1)增加hap包
將2.3生成的包拷貝到applications\standard\hap路徑下
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
(2)修改gn文件
gn文件路徑為:\applications\standard\hap\BUILD.gn,在文件中增加如下代碼:
ohos_prebuilt_etc("zjxapp_hap") {
source = "zjxapp.hap"
module_install_dir = "app/com.ohos.zjxapp"
part_name = "prebuilt_hap"
subsystem_name = "applications"
}
修改依賴項(xiàng)deps,增加zjxapp_hap:
group("hap") {
deps = [
"http://applications/standard/hap:calc_demo_hap",
"http://applications/standard/hap:zjxapp_hap",
]
(3)修改預(yù)安裝配置
獲取app_signature
app_signature信息需要在系統(tǒng)預(yù)安裝配置中使用,故需要優(yōu)先生成app_signature。
新建profiler.cer文件
任意路徑下新建一文件,命名為profiler.cer
添加profiler.cer內(nèi)容
根據(jù)2.2生成的p7b文件中distribution-certificate字段的值到profiler.cer文件中,去掉回車符,示例如圖:
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
獲取app_signature
到profiler.cer路徑下,在命令行終端中根據(jù)證書文件獲取簽名信息,命令如下:
keytool -printcert -file .\profiler.cer
命令執(zhí)行后結(jié)果如圖所示:
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
將SHA256值去掉冒號(hào)即可得到app_signature
修改權(quán)限配置文件
修改install_list
根據(jù)包名修改vendor\hihope\rk3568\preinstall-config\install_list.json
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
修改install_list_capability
根據(jù)包名、app_signature修改vendor\hihope\rk3568\preinstall-config\install_list_capability.json
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
修改install_list_permissions
根據(jù)包名、app_signature、以及需要的權(quán)限修改vendor\hihope\rk3568\preinstall-config\install_list_permissions.json
OpenHarmony自定義系統(tǒng)應(yīng)用之實(shí)踐介紹-開源基礎(chǔ)軟件社區(qū)
(4)編譯燒錄
以上修改完成后,編譯成功,進(jìn)行燒錄。燒錄成功后,預(yù)置的系統(tǒng)應(yīng)用顯示在桌面上。
4、總結(jié)
本文介紹如何在OpenHarmony系統(tǒng)上開發(fā)自定義的系統(tǒng)應(yīng)用,重點(diǎn)介紹了如何使用打包工具命令行方式生成應(yīng)用簽名包的方法,以及如何修改預(yù)置應(yīng)用配置的步驟,開發(fā)者在此基礎(chǔ)上即可開發(fā)自定義的系統(tǒng)應(yīng)用程序,以便更好地提高系統(tǒng)的定制化和個(gè)性化、增強(qiáng)系統(tǒng)的功能和競爭力、滿足用戶需求等。