当前位置: 首页 > 科技观察

解决应用权限失败导致的安装错误问题

时间:2023-03-18 13:31:21 科技观察

更多开源信息请访问:开源基础软件社区https://ost.51cto.com前言作者最近在开发时一个应用,遇到installfailedduetograntrequestpermissionsfailed。报错信息大概意思是申请权限失败导致安装失败。根据相关资料,应用APL级别分为三个,分别是:APL级别描述system_core级别这一级别的应用服务提供了操作系统的核心能力。system_basic级别该级别的应用程序服务提供系统基础服务。一般使用普通等级。默认情况下,应用程序的APL级别为普通级别。如果应用需要声明自身的APL级别为system_basic或以上,开发应用安装包时必须修改应用配置文件。问题解决1、首先根据参考文献[2]查询应用申请的权限级别。比如笔者在config.json文件中申请了如下权限。"reqPermissions":[{"name":"ohos.permission.CAPTURE_SCREEN"}]查询应用权限列表,得到权限级别为system_core。权限名称权限级别授权方式ACL启用权限说明ohos.permission.CAPTURE_SCREENsystem_coresystem_grantTRUE允许应用程序捕获屏幕图像。2.打开编译当前应用的SDK版本对应的UnsgnedReleasedProfileTemplate.json文件。这里有两种修改方法:方法一:将apl字段的值修改为application申请权限的最高级别(system_core>system_basic>normal)。高层应用可以申请本层及以下的权限。{..."bundle-info":{"developer-id":"OpenHarmony",..."apl":"system_core","app-feature":"hos_system_app"},...}方法二:从上面查询到的信息我们知道该权限的ACLenable为TRUE,也就是说我们可以通过ACL来申请。将高于当前应用程序APL级别的所需权限添加到allowed-acls列表中。{...“bundle-info”:{“developer-id”:“OpenHarmony”,...“apl”:“normal”,“app-feature”:“hos_system_app”},“acls”:{“允许-acls":["ohos.permission.CAPTURE_SCREEN"]},...}3.完成以上步骤后,打开DevEcoStudio工具进行自动签名。如果之前签名过,需要自动签名所有文件删除并清空signingConfigs字段,这样自动签名时会根据上面修改的签名证书模板生成新的证书。完成后就可以打包安装了。如果遇到如下installsigninfoinstalledinfoinconsistent错误报错,只需卸载原设备上安装的应用,重新安装即可。结论关于权限级别,开发者应根据实际情况修改相应的应用程序APL级别。为了系统安全,请勿滥用权限。比如笔者推荐的方法就是第二种方法。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。