如果应用需要将自身的APL等级声明为system_basic及以上的APL等级,在开发应用安装包时,要修改应用的Profile文件。
前言
笔者最近在开发应用时遇到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等级,为了系统的安全切勿滥用权限,例如笔者上面的情况推荐的做法是方式二。
©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经