Flutter应用上传Google Play Console时提示需移除未在Manifest中声明的REQUEST_INSTALL_PACKAGES权限求助
解决Flutter应用中未声明但存在
REQUEST_INSTALL_PACKAGES权限的问题 别担心,这个权限大概率是你项目里依赖的第三方插件自动添加的——Flutter会合并所有依赖库的AndroidManifest.xml到最终打包清单中,所以你自己的清单里看不到,但最终安装包是包含这个权限的。下面是具体的排查和移除方法:
一、先确认权限的来源
- 通过Android Studio查看合并后的清单
打开项目的android模块,找到app/src/main/AndroidManifest.xml,打开后底部有个「Merged Manifest」标签页,点击进去就能看到最终合并后的所有权限,同时会标注每个权限来自哪个依赖库(显示对应的gradle路径)。 - 用命令行生成合并后的清单
在项目根目录执行如下命令:
执行完成后,合并后的清单文件会在./gradlew :app:processDebugManifestapp/build/intermediates/merged_manifests/debug/AndroidManifest.xml路径下,打开就能定位到这个权限的来源。
二、移除多余的权限
找到来源后,有两种解决方式:
- 直接在自身Manifest中强制移除
在你的AndroidManifest.xml里添加带有tools:node="remove"属性的权限声明,以此删除这个自动添加的权限,代码示例:<!-- 先在manifest根标签添加tools命名空间 --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.your.app.package"> <!-- 移除不需要的权限 --> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove" /> <!-- 其他原有代码 --> </manifest> - 排查依赖库的必要性
如果找到是某个插件添加的权限,你可以查看该插件的官方文档,确认它是否真的需要这个权限。如果插件有更新版本移除了不必要的权限,直接升级插件即可;如果插件确实不需要这个权限,也可以联系开发者反馈问题。
三、验证移除结果
修改完成后,重新打包项目,再用前面的方法查看合并后的清单,确认REQUEST_INSTALL_PACKAGES权限已经消失,之后再上传到Google Play Console就不会收到这个通知了。
内容的提问来源于stack exchange,提问作者Sharif
相关产品推荐
相关产品推荐

