Flutter应用未使用权限却遭Google Play要求声明,如何移除?
解决Flutter应用上传Google Play时未使用权限的问题
步骤1:定位权限来源
Google Play检测到的未使用权限,基本都是依赖库在自身的AndroidManifest.xml中声明的。要找出具体来源,你可以通过Gradle生成合并后的Manifest文件查看:
- 进入Flutter项目的
android目录,执行命令:./gradlew app:mergeReleaseAndroidManifest - 生成的合并Manifest文件路径为:
app/build/intermediates/merged_manifests/release/AndroidManifest.xml - 打开这个文件,每个权限条目上方会有注释标注它来自哪个依赖库(比如
<!-- com.example.library:1.0.0 -->),这样就能精准定位到权限的来源。
步骤2:移除未使用的权限
找到来源后,直接在你项目自己的android/app/src/main/AndroidManifest.xml中强制移除这些权限,操作如下:
先在Manifest根标签中添加
tools命名空间(如果还没有的话):<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名">对每个未使用的权限,添加
tools:node="remove"属性来忽略依赖库的声明,比如移除READ_PHONE_STATE权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
步骤3:优化依赖(可选)
如果某个依赖库引入了大量不必要的权限,你可以考虑:
- 替换为功能类似但权限更精简的替代库;
- 升级该依赖到最新版本,有些新版本会移除冗余权限;
- 如果该依赖的功能你只用了一小部分,评估是否可以自行实现这部分功能以移除依赖。
比如你项目中的flutter_device_type库可能会引入READ_PHONE_STATE权限来获取设备信息,如果你的应用不需要精准设备类型识别,可以考虑用Flutter原生API替代,或者直接移除该库。
内容的提问来源于stack exchange,提问作者An Tran
相关产品推荐
相关产品推荐

