未使用REQUEST_INSTALL_PACKAGES权限却遭Google Play多次拒审,求解决方案
解决REQUEST_INSTALL_PACKAGES权限误判拒审问题
排查依赖库隐式引入权限
- 检查所有第三方依赖库(广告、统计、推送SDK等),这类权限常由依赖库隐式添加。执行
./gradlew app:dependencies生成依赖树,逐个排查可疑库。 - 找到对应依赖后,在
build.gradle中通过exclude移除:implementation('com.example:target-sdk:1.0.0') { exclude group: 'com.android.support', module: 'support-core-utils' // 或针对权限的Manifest合并规则做精准排除 }
强化Manifest权限移除声明
- 确保在
AndroidManifest.xml中明确添加移除规则,且引入tools命名空间:<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove" /> <!-- 其他配置 --> </manifest> tools:node="remove"会强制在Manifest合并阶段删除该权限,避免依赖库的声明覆盖。
验证构建产物的最终Manifest
- 生成APK/AAB后,用Android Studio的
Build > Analyze APK/AAB功能打开,查看合并后的AndroidManifest.xml确认权限已清除。 - 也可通过命令行工具验证:
aapt dump xmltree app-release.apk AndroidManifest.xml,直接搜索权限名确认无残留。
向Google Play申诉时提交关键证据
- 申诉描述需简洁明确:
- 说明应用核心功能无需该权限,自身代码从未声明
- 已排查并移除所有依赖库隐式引入的权限
- 附上构建产物Manifest的截图或文本片段,证明权限已彻底清除
- 避免冗余表述,用技术化语言让审核团队快速定位问题。
额外排查点
- 检查代码中是否存在动态请求该权限的逻辑(哪怕是注释掉的),确保无相关调用
- 确认应用的targetSdkVersion符合Google Play当前要求,旧版本SDK可能触发默认权限引入
内容的提问来源于stack exchange,提问作者Srinu Guntamukkala
相关产品推荐
相关产品推荐

