Android 12 设备上的应用安装失败。

3

我们的应用在迁移到目标SdkVersion 31后无法安装。在尝试查找问题时,我们发现一个库正在使用FLASHLIGHT权限,而我们在安装过程中遇到了以下错误:

安装失败原因:'使用命令cmd package install-commit 130765275提交安装会话130765275失败。错误: -127:包com.xxxx.yyyy.zzzz企图在不存在的组android.permission-group.HARDWARE_CONTROLS中声明权限android.permission.FLASHLIGHT'

库的清单文件中使用的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

<permission
    android:name="android.permission.FLASHLIGHT"
    android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
    android:protectionLevel="normal" />

有没有什么解决该问题的方法?


1
你能展示一下清单文件吗? - Sujal Kumar
1个回答

2

android.permission-group.HARDWARE_CONTROLS在targetSdkVersion 31中已被弃用。解决方法是在您的清单文件中删除库使用的权限。

<permission
      android:name="permissionOne"
      tools:node="remove"
      tools:selector="com.example.lib1">

tools:node="remove"

如果在您的任何库中使用了该权限,此工具将从应用程序中删除该权限。


1
你能否更具体地说明在上述代码中需要替换什么?这对我没有任何帮助。我遇到了一个不同权限的相同问题:com.xxx.xxx.xx.andpermission.bridge但是只有在我删除了最后一行:tools:selector="com.example.lib1"并将第一行替换为实际的权限问题,即com.xxx.xxx.xx.andpermission.bridge之后,它才对我起作用。 - theAndDev
1
替换tools:selector="com.example.lib1"中的<com.example.lib1>,使用使用了不需要权限的库的包名。 - Jinson Paul
有没有办法可以找出哪个库在使用这个权限?我正在使用大约十几个库。 - theAndDev
我认为需要在GitHub中检查每个库的源代码是否是开源的。 - Jinson Paul
做完这件事后,手电筒停止工作了。如何使它再次工作? - Kalpesh Wadekar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接