鸿蒙应用安装报错问题解决方案
本文主要讲解如何解决鸿蒙开发中应用申请权限失败导致安装报错问题。
笔者最近在开发应用时遇到如下报错信息:
install failed due to grant request permissions failed
大概意思为由于申请权限失败导致安装失败。
查询相关资料得知,应用 APL 等级有三个,分别是:
默认情况下,应用的 APL 等级都为 normal 等级。
如果应用需要将自身的 APL 等级声明为 system_basic 及以上的 APL 等级,在开发应用安装包时,要修改应用的 Profile 文件。
问题解决
①首先查询应用申请的权限等级,例如笔者这里在 config.json 文件申请了以下权限:
"reqPermissions": [ { "name": "ohos.permission.CAPTURE_SCREEN" } ]
查询应用权限列表得到该权限的级别为 system_core。
②打开编译当前应用的 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" ] }, ... }
③完成以上步骤后,打开 DevEco Studio 工具进行自动化签名即可,如之前已签过名,需将 signingConfigs 字段清空,这样自动签名时才会根据上面修改的签名证书模板生成新的证书。
完成后打包安装即可,如遇到以下 install sign info inconsistent 报错问题,只需将原来设备上安装的应用卸载再安装即可。
结语
对于权限等级开发者应根据实际情况修改对应的应用 APL 等级,为了系统的安全切勿滥用权限,例如笔者上面的情况推荐的做法是方式二。