谷歌Play商店应用因QUERY_ALL_PACKAGES权限被拒,移除后仍遭拒求解决方案
解决QUERY_ALL_PACKAGES权限移除后仍被谷歌Play拒审的思路
- 先查编译产物的实际权限清单:代码里删了权限不代表最终APK里没有,第三方依赖库可能偷偷加了。用
aapt dump badging 你的APK文件名.apk命令看最终权限列表,确认有没有android.permission.QUERY_ALL_PACKAGES。要是有,要么升级依赖库版本,要么在Manifest里加强制移除的配置:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:node="remove" />
记得在Manifest根节点加xmlns:tools="http://schemas.android.com/tools"声明。
确认测试包和上传包一致:别搞混debug和release包,检查release构建的gradle配置,看有没有在release变体里额外加权限,或者打包脚本、混淆规则改了权限清单。
更新谷歌Play控制台的权限声明:之前提交过带这个权限的版本,控制台里的声明可能没清。去「应用内容」-「权限和声明」里,删掉QUERY_ALL_PACKAGES相关的声明条目,新版本提交时别勾选这个权限的声明选项。
清构建缓存:Android Studio的缓存可能留了旧Manifest。直接点
File -> Invalidate Caches...,或者手动删项目根目录的.gradle、build文件夹,再重新打release包。抠拒审邮件的细节:谷歌拒审邮件里会说权限来源,比如哪个组件或库触发的。仔细看技术部分,要是是因为调用了需要这个权限的API(比如
PackageManager.getInstalledPackages()的特定参数),哪怕没加权限也会被判定,这时候得换成合规的API,比如用PackageManager.queryIntentActivities()查特定Intent的应用,别直接拿所有已安装应用列表。
内容的提问来源于stack exchange,提问作者Leonhard Okrusch
相关产品推荐
相关产品推荐

