解決應用申請權限失敗導致安裝報錯問題
前言
筆者最近在開發應用時遇到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文件申請了以下權限。
查詢應用權限列表得到該權限的級別為system_core。
權限名 | 權限級別 | 授權方式 | ACL使能 | 權限說明 |
ohos.permission.CAPTURE_SCREEN | system_core | system_grant | TRUE | 允許應用截取屏幕圖像。 |
2.打開編譯當前應用的SDK版本對應的UnsgnedReleasedProfileTemplate.json文件。
這里有兩種修改方式:
方式一:
修改apl字段的值為應用申請權限的最高等級(system_core>system_basic>normal),高等級的應用可以申請該級別及以下的的權限。
方式二:
由上面查詢的信息得知,權限的ACL使能為TRUE,這意味著我們可以通過ACL方式申請。
將所需申請的權限中高于當前應用APL等級的,添加到allowed-acls列表中。
3.完成以上步驟后,打開DevEco Studio工具進行自動化簽名即可,如之前已簽過名,需將自動簽名的文件全部刪除并將signingConfigs字段清空,這樣自動簽名時才會根據上面修改的簽名證書模板生成新的證書。
完成后打包安裝即可,如遇到以下install sign info inconsistent報錯問題,只需將原來設備上安裝的應用卸載再安裝即可。
結語
對于權限等級開發者應根據實際情況修改對應的應用APL等級,為了系統的安全切勿濫用權限,例如筆者上面的情況推薦的做法是方式二。