前言
筆者最近在開發應用時遇到
install failed due to grant request permissions failed
,報錯資訊大概意思為由于申請權限失敗導緻安裝失敗
查詢相關資料得知,應用APL等級有三個,分别是:
APL級别 | 說明 |
---|---|
system_core等級 | 該等級的應用服務提供作業系統核心能力。 |
system_basic等級 | 該等級的應用服務提供系統基礎服務。 |
normal等級 | 普通應用。 |
預設情況下,應用的APL等級都為normal等級。
如果應用需要将自身的APL等級聲明為system_basic及以上的APL等級,在開發應用安裝包時,要修改應用的Profile檔案。
問題解決
1.首先根據參考資料[2] 查詢應用申請的權限等級,例如筆者這裡在
config.json
檔案申請了以下權限
"reqPermissions": [
{
"name": "ohos.permission.CAPTURE_SCREEN"
}
]
查詢應用權限清單得到該權限的級别為
system_core
權限名 | 權限級别 | 授權方式 | ACL使能 | 權限說明 |
---|---|---|---|---|
ohos.permission.CAPTURE_SCREEN | system_core | system_grant | TRUE | 允許應用截取螢幕圖像。 |
2.打開編譯目前應用的SDK版本對應的
UnsgnedReleasedProfileTemplate.json
檔案

這裡有兩種修改方式:
方式一:
修改
apl
字段的值為應用申請權限的最高等級(system_core>system_basic>normal),高等級的應用可以申請該級别及以下的的權限
{
...
"bundle-info":{
"developer-id":"OpenHarmony",
...
"apl":"system_core",
"app-feature":"hos_system_app"
},
...
}
方式二:
由上面查詢的資訊得知,權限的ACL使能為
TRUE
,這意味着我們可以通過ACL方式申請
将所需申請的權限中高于目前應用APL等級的,添加到
allowed-acls
清單中
{
...
"bundle-info":{
"developer-id":"OpenHarmony",
...
"apl":"normal",
"app-feature":"hos_system_app"
},
"acls":{
"allowed-acls":[
"ohos.permission.CAPTURE_SCREEN"
]
},
...
}
3.完成以上步驟後,打開DevEco Studio工具進行自動化簽名即可,如之前已簽過名,需将自動簽名的檔案全部删除并将
signingConfigs
字段清空,這樣自動簽名時才會根據上面修改的簽名證書模闆生成新的證書
完成後打包安裝即可,如遇到以下
install sign info inconsistent
報錯問題,隻需将原來裝置上安裝的應用解除安裝再安裝即可
結語
對于權限等級開發者應根據實際情況修改對應的應用APL等級,為了系統的安全切勿濫用權限,例如筆者上面的情況推薦的做法是方式二
參考資料
[1]應用APL等級說明
[2]應用權限清單
【小源筆記】為筆者開發過程中的一些經驗分享,旨在解決官方文檔過于晦澀難懂或者示例代碼不夠詳細的問題,同時友善筆者日後回顧以及其他開發者更快上手,歡迎評論留言~
往期推薦:
【小源筆記】第三期 | JS SDK下載下傳失敗?那你可能是沒配置npm代理
【小源筆記】第四期 | Stage模型設定應用啟動首頁面
【小源筆記】第五期 | 如何将應用内置到OpenHarmony系統中
本文作者:Haoc_小源同學