天天看點

【小源筆記】第六期 | 解決應用申請權限失敗導緻安裝報錯問題

前言

筆者最近在開發應用時遇到

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_小源同學