【小源笔记】第六期 | 解决应用申请权限失败导致安装报错问题 原创 精华

Haoc_小源同学
发布于 2022-12-7 10:41
浏览
6收藏

前言

笔者最近在开发应用时遇到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系统中

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-12-7 15:18:15修改
12
收藏 6
回复
举报
6条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

文档还是楼主看的细

1
回复
2022-12-7 11:21:49
青舟321
青舟321

直接改权限容易出问题,方法二很实用。


回复
2022-12-7 14:40:18
诺舒华吃西瓜
诺舒华吃西瓜

文档中system_core权限暂不向任何应用开放,说明权限等级管理还是很严格的

回复
2022-12-8 11:10:41
喝一大口可乐
喝一大口可乐

不错,思路清晰

回复
2022-12-9 17:28:27
hmyxd
hmyxd

设置权限等级的主要目的是为了保护用户隐私吗?


回复
2022-12-12 10:42:56
Haoc_小源同学
Haoc_小源同学 回复了 hmyxd
设置权限等级的主要目的是为了保护用户隐私吗?

除此以外更多的应该是保证操作系统的安全吧

回复
2022-12-13 09:34:42
回复
    相关推荐