You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用因REQUEST_INSTALL_PACKAGES权限合规问题被Google Play拒绝的解决方案咨询

Flutter应用因REQUEST_INSTALL_PACKAGES权限合规问题被Google Play拒绝的解决方案咨询

我完全理解你现在的焦虑——明明自己没主动使用REQUEST_INSTALL_PACKAGES权限,Google Play却反复因为这个权限拒绝你的应用,甚至加了tools:node="remove"声明也没用。别慌,我们一步步来定位问题并解决:

第一步:精准定位哪个依赖包引入了这个权限

你怀疑是某个Flutter依赖偷偷加了这个权限,这大概率是问题根源。可以用以下方法找出“元凶”:

  • 查看合并后的Manifest文件:
    先执行flutter build apk --debug生成调试包,然后在项目路径下找到build/app/intermediates/merged_manifest/debug/AndroidManifest.xml,打开这个文件搜索REQUEST_INSTALL_PACKAGES,文件里会标注该权限是来自哪个依赖库(通常会有类似#from <某个依赖的aar文件>的注释)。
  • 用Gradle命令排查:
    在项目的android目录下,执行./gradlew app:mergeDebugManifest(Windows系统用gradlew.bat app:mergeDebugManifest),命令输出里会详细显示Manifest合并的过程,你能从中找到引入该权限的具体依赖。

第二步:针对性解决依赖带来的权限问题

找到对应的依赖后,你可以尝试这些方案:

  • 升级依赖到最新版本:很多包的开发者会在后续版本中移除不必要的权限,比如你用的file_picker、open_filex这类涉及文件操作的包,去它们的pub.dev页面看看最新版本的更新日志,确认是否已经去掉了REQUEST_INSTALL_PACKAGES权限,然后升级试试。
  • 确保tools:node="remove"生效:
    很多人忽略了一个关键点:必须在Manifest的根标签里引入tools命名空间,否则tools:node属性不会生效。你的Manifest开头应该是这样的:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools">
    
    然后再把移除声明放在<manifest>标签下的合适位置,确保没有拼写错误。

第三步:额外排查要点

  • 检查所有构建变体:Google提到要移除所有版本(生产、测试)的该权限,所以要确认你所有的构建变体对应的Manifest文件里都没有这个权限,也都加了正确的移除声明。
  • 排查功能相关的依赖:看你的依赖列表,open_filex、syncfusion_flutter_pdfviewer这类可能涉及文件打开/预览的包,有可能在某些场景下触发了安装包权限的请求,去这些包的GitHub仓库看看issues,有没有其他开发者遇到过同样的问题,或许能找到现成的解决方案。

第四步:提交前的验证

生成最终的构建包后,用Android Studio的APK Analyzer打开APK(菜单栏选择Build > Analyze APK),查看包内的AndroidManifest.xml,确认REQUEST_INSTALL_PACKAGES权限已经完全被移除,再提交到Google Play,避免再次被拒。

备注:内容来源于stack exchange,提问作者Muhammad Umair Saqib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:15:29