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

React Native安卓App出现未声明QUERY_ALL_PACKAGES权限问题

关于build目录下Manifest文件的作用及额外权限来源

build目录下的所有文件都是Gradle构建流程生成的中间产物,不属于需要手动修改的源码范畴:

  • merged_manifests目录下的AndroidManifest.xml是安卓构建过程中清单合并步骤的最终输出文件。安卓构建时会自动将三类Manifest内容合并到一起:主源码路径下你自己写的AndroidManifest.xml、所有引入的第三方依赖(包括npm包引入的安卓依赖、Gradle远程依赖)自带的清单文件、当前构建变体(比如release/debug)对应的配置清单。这个合并后的文件会被直接打包进最终的APK/AAB安装包,是应用实际生效的清单配置。
  • bundle_manifest目录下的清单是打AAB格式(Google Play强制要求的上传包格式)时,从最终合并清单中提取出来用于包结构校验的副本,内容和合并后的主清单完全一致。

你没有主动声明的权限,全部是第三方依赖通过清单合并规则自动带入的。安卓默认的清单合并策略会保留所有依赖声明的权限、组件配置,你看到的USE_BIOMETRIC、FOREGROUND_SERVICE、CHECK_LICENSE这类权限基本是React Native核心库、Google Play服务SDK、内购SDK自动声明的,属于正常的基础功能依赖。QUERY_ALL_PACKAGES是某个需要检测设备已安装应用列表的第三方依赖声明的,不会因为你没在主Manifest写就不进入最终包。

移除QUERY_ALL_PACKAGES权限的可落地方案

按以下步骤操作即可满足Google Play合规要求:

  • (可选)先定位权限来源
    你可以在项目根目录执行以下命令,查看完整的依赖树,找到引入该权限的具体依赖:
# macOS/Linux
cd android && ./gradlew app:dependencies

# Windows
cd android && gradlew.bat app:dependencies

也可以直接打开merged_manifests下的最终合并清单,找到QUERY_ALL_PACKAGES所在行,行尾一般会附带注释标明该条目来自哪个依赖包。如果该依赖有新版本移除了这个权限,直接升级依赖是最彻底的解决方式。

  • 强制移除权限(通用方案,适用于所有场景)
    你不需要改动依赖代码,直接在自己维护的主Manifest文件(android/app/src/main/AndroidManifest.xml)中配置合并移除规则即可:
    1. 在Manifest的根节点上添加tools命名空间声明,否则编译时会报属性找不到的错误:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="你的应用包名">
    
    1. 在你声明的权限列表中添加一行移除规则,告诉构建系统在合并时强制删除该权限:
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:node="remove" />
    
  • 校验结果
    修改完成后重新打release包,再次查看build目录下的合并Manifest文件,确认QUERY_ALL_PACKAGES条目已经消失,就可以上传Google Play了。

注意:其余自动合并进来的权限(USE_BIOMETRIC、FOREGROUND_SERVICE、CHECK_LICENSE、com.google.android.c2dm.permission.RECEIVE等)均为Google Play合规允许的权限,是内购、推送、生物识别、授权校验等基础功能的必需项,不需要额外移除。

内容的提问来源于stack exchange,提问作者Matthew Dejager

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:24:33