Google Play 商店团队提到,他们发现 我们的应用程序不符合 REQUEST_INSTALL_PACKAGES 权限的使用方式。具体来说,权限的使用与应用程序的核心用途没有直接关系。
但是在我们的应用程序中没有任何地方,我们使用了 REQUEST_INSTALL_PACKAGES 权限,但仍然被拒绝多次。
我们在 Android 清单中添加了以下代码片段,以从我们的构建中删除 REQUEST_INSTALL_PACKAGES 并发送给 Play 商店审核。我们已经在构建权限中进行了验证,但找不到 REQUEST_INSTALL_PACKAGES,但仍然被 Play 商店拒绝。
如果有人遇到此问题,请告知我们,以及我们如何纠正此错误并使我们的构建获得 Play 商店团队的批准。
就我而言,这与 Flutter 中的 open_file 有关。此软件包在清单中使用 REQUEST_INSTALL_PACKAGES 权限。
我使用(open_file_safe)修复:https://pub.dev/packages/open_file_safe
或者您也可以使用 open_filex:https://pub.dev/packages/open_filex
两个包与 open_file 相同,但不支持 .apk 文件类型。因此,不需要 android.permission.REQUEST_INSTALL_PACKAGES 权限。
如果您没有使用 open_file 插件,请检查 build/app/intermediates/merged_manifest/ 中的合并清单中是否声明了权限 REQUEST_INSTALL_PACKAGES 如果正在使用,则删除该权限,或者删除该插件并找到任何其他替代方法那个插件。
注意:如果您在本机 Android 项目中遇到此问题,您可能会使用包管理器查询所有包,但自 Android 8.0 起不再允许这样做。要解决此问题,请在 android studio 中打开应用程序的 android 项目,然后检查 AndroidManifest.xml 的合并清单部分,看看是否发现您的应用程序正在使用该权限(如果正在使用该权限,请删除该权限。
)如果您仍然无法找到插件或在合并的清单文件中找到解决方法,您可以尝试添加:
<uses-permission
android:name="android.permission.REQUEST_INSTALL_PACKAGES"
tools:node="remove" />
在您的主清单文件中。尝试在 Play 商店中再次提交应用程序希望它会有所帮助。
在此处查看更多信息。 https://support.google.com/googleplay/android-developer/answer/12085295?hl=en
检查您的 Alpha、Beta 版本和开放测试轨道。有时,如果您的其他轨道具有此权限,则生产中的构建将被拒绝。因此,删除这些轨道中的旧版本并尝试将新的 APK 上传到生产轨道。
如果您没有手动添加它,它可能是由 pubspec.yaml 文件中的库自动生成的。解决方法如下:
检查您的 AndroidManifest.xml 文件,确保您没有手动添加
REQUEST_INSTALL_PACKAGES
权限。如果没有,请继续执行以下步骤。
导航到项目目录中的以下位置:
build/app/outputs/logs/manifest-merger-release-report.txt
。
在
manifest-merger-release-report.txt
文件中,搜索 REQUEST_INSTALL_PACKAGES
以识别哪些插件正在调用此权限。就我而言,插件是:
如果您的项目不需要这些插件,请考虑从 pubspec.yaml 文件中删除它们或将它们更新到最新版本。
或者,您可以在 Android Studio 中执行全局搜索
REQUEST_INSTALL_PACKAGES
。如果您发现自动生成的文件调用此权限,请评论或删除这些实例。如果这些文件包含返回权限的代码,请将 REQUEST_INSTALL_PACKAGES
替换为现有权限,例如 permission.INTERNET
。
注意:在 VSCode 中执行全局搜索
REQUEST_INSTALL_PACKAGES
可能不会产生结果。确保在此步骤中您的项目已在 Android Studio 中打开。