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

Gradle升级至8.0后,如何为Flutter所有插件模块配置Namespace?

解决Gradle 8.0下Flutter插件模块未指定Namespace的构建错误

Gradle 8.0(对应Android Gradle Plugin 8.0)强制要求所有Android模块(包括库模块、Flutter插件模块)必须显式声明namespace,不再支持通过AndroidManifest.xml的package属性自动推断命名空间。你已经在主App模块配置了namespace,但报错的webview_pro_android插件模块未配置,导致构建失败。

以下是针对性解决方法:

1. 插件是本地开发的模块

如果webview_pro_android是你自己维护的本地插件:

  • 找到项目中android/webview_pro_android目录下的build.gradle文件
  • 在android代码块中添加namespace配置,命名空间建议保持和主App的风格一致,示例:
    android {
        compileSdkVersion 33
        // 添加这一行
        namespace 'com.appidname.webview_pro'
    
        defaultConfig {
            // 库模块不需要applicationId,可删除该配置
            minSdkVersion 21
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
        // 其他原有配置
    }
    

2. 插件是第三方远程依赖

如果webview_pro_android是pub.dev或其他仓库的第三方插件:

  • 优先检查插件是否有适配AGP 8.0的新版本,若有则直接升级插件版本到最新版(在pubspec.yaml中更新依赖版本)
  • 若插件未更新,可临时通过项目级gradle文件统一配置默认命名空间:
    打开项目根目录的android/build.gradle,添加subprojects代码块:
    buildscript {
        // 原有配置...
    }
    
    allprojects {
        repositories {
            // 原有配置...
        }
    }
    
    // 添加以下代码
    subprojects {
        afterEvaluate { project ->
            if (project.hasProperty('android')) {
                android {
                    // 为所有未指定namespace的模块设置默认命名空间,可根据需求调整规则
                    namespace "com.appidname.plugins.${project.name.toLowerCase()}"
                }
            }
        }
    }
    
    注意:此方案为临时 workaround,长期来看建议等待插件作者更新适配AGP 8.0。

通用注意事项

  • 所有Android模块的namespace必须唯一,不能重复
  • 库模块无需配置applicationId,仅保留namespace即可
  • 配置完成后执行flutter clean清理缓存,再重新构建项目

内容的提问来源于stack exchange,提问作者Hammam Oktajianto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:00:09