You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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权限,再手动添加正确位置的权限:
    <!-- 移除所有自动生成的INTERNET权限 -->
    <uses-permission android:name="android.permission.INTERNET" tools:node="remove" />
    <!-- 手动添加符合规范的权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    
    构建时gradle会先清理所有自动注入的该权限,只保留你手动添加的正确版本。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:42:49