解決應(yīng)用申請權(quán)限失敗導(dǎo)致安裝報錯問題
??想了解更多關(guān)于開源的內(nèi)容,請訪問:??
前言
筆者最近在開發(fā)應(yīng)用時遇到install failed due to grant request permissions failed,報錯信息大概意思為由于申請權(quán)限失敗導(dǎo)致安裝失敗。
查詢相關(guān)資料得知,應(yīng)用APL等級有三個,分別是:
APL級別 | 說明 |
system_core等級 | 該等級的應(yīng)用服務(wù)提供操作系統(tǒng)核心能力。 |
system_basic等級 | 該等級的應(yīng)用服務(wù)提供系統(tǒng)基礎(chǔ)服務(wù)。 |
normal等級 | 普通應(yīng)用。 |
默認情況下,應(yīng)用的APL等級都為normal等級。
如果應(yīng)用需要將自身的APL等級聲明為system_basic及以上的APL等級,在開發(fā)應(yīng)用安裝包時,要修改應(yīng)用的Profile文件。
問題解決
1.首先根據(jù)參考資料[2] 查詢應(yīng)用申請的權(quán)限等級,例如筆者這里在config.json文件申請了以下權(quán)限。
查詢應(yīng)用權(quán)限列表得到該權(quán)限的級別為system_core。
權(quán)限名 | 權(quán)限級別 | 授權(quán)方式 | ACL使能 | 權(quán)限說明 |
ohos.permission.CAPTURE_SCREEN | system_core | system_grant | TRUE | 允許應(yīng)用截取屏幕圖像。 |
2.打開編譯當(dāng)前應(yīng)用的SDK版本對應(yīng)的UnsgnedReleasedProfileTemplate.json文件。
這里有兩種修改方式:
方式一:
修改apl字段的值為應(yīng)用申請權(quán)限的最高等級(system_core>system_basic>normal),高等級的應(yīng)用可以申請該級別及以下的的權(quán)限。
方式二:
由上面查詢的信息得知,權(quán)限的ACL使能為TRUE,這意味著我們可以通過ACL方式申請。
將所需申請的權(quán)限中高于當(dāng)前應(yīng)用APL等級的,添加到allowed-acls列表中。
3.完成以上步驟后,打開DevEco Studio工具進行自動化簽名即可,如之前已簽過名,需將自動簽名的文件全部刪除并將signingConfigs字段清空,這樣自動簽名時才會根據(jù)上面修改的簽名證書模板生成新的證書。
完成后打包安裝即可,如遇到以下install sign info inconsistent報錯問題,只需將原來設(shè)備上安裝的應(yīng)用卸載再安裝即可。
結(jié)語
對于權(quán)限等級開發(fā)者應(yīng)根據(jù)實際情況修改對應(yīng)的應(yīng)用APL等級,為了系統(tǒng)的安全切勿濫用權(quán)限,例如筆者上面的情況推薦的做法是方式二。