Flutter调试时android_manifest.xml自动添加INTERNET权限至错误位置咨询
Flutter自动添加INTERNET权限且位置错误的问题解决
问题原因
Flutter的Android构建插件(flutter.gradle)默认会自动向AndroidManifest.xml注入INTERNET权限——框架本身依赖网络完成调试通信、引擎资源加载等操作,不管是调试还是发布版本都会触发这个逻辑。如果之前你手动在错误位置(比如application标签内)添加过该权限,或者插件注入时出现位置异常,就会生成重复且不符合规范的权限条目。手动删除后,每次构建时插件又会自动重新添加,导致问题反复出现。
解决方法
1. 用Manifest命名空间强制控制权限位置
这是最直接的解决方式,通过Android的tools命名空间精准管理权限:
- 首先在
AndroidManifest.xml的根manifest标签中添加tools命名空间:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名"> - 然后在manifest块内、application标签外,先移除所有自动注入的
INTERNET权限,再手动添加正确位置的权限:
构建时gradle会先清理所有自动注入的该权限,只保留你手动添加的正确版本。<!-- 移除所有自动生成的INTERNET权限 --> <uses-permission android:name="android.permission.INTERNET" tools:node="remove" /> <!-- 手动添加符合规范的权限 --> <uses-permission android:name="android.permission.INTERNET" />
2. 关闭Flutter自动权限注入(可选)
如果不需要自动注入权限,可以修改android/app/build.gradle配置:
在android{}块内添加如下规则:
android { defaultConfig { manifestPlaceholders = [flutterEmbedding: '2'] } lintOptions { disable 'MissingPermission' } }
3. 清理构建缓存
不管用哪种方法,都建议清理旧的构建缓存避免残留问题:
flutter clean flutter pub get cd android && ./gradlew clean cd .. && flutter run
内容的提问来源于stack exchange,提问作者emsiloader
相关产品推荐
相关产品推荐

