升级Gradle插件后Flutter Android命名空间及编译故障排查
解决Flutter升级Gradle后遇到的Kotlin版本、Activity找不到及命名空间问题
一、统一对齐AGP与Kotlin版本
AGP 8.7要求搭配Kotlin 1.9.20及以上版本,直接在android/build.gradle中指定统一版本:
buildscript { ext.kotlin_version = '1.9.20' repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:8.7.0" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
二、修复第三方插件的namespace缺失问题
报错指向appcenter_sdk_flutter模块未指定namespace,这是旧版插件未适配AGP 8.x强制namespace要求导致的,两种解决方式:
- 升级插件到最新版:检查
pubspec.yaml中appcenter_sdk_flutter的版本,替换为适配AGP 8.x的最新版本后执行flutter pub get。 - 手动给第三方模块补全namespace:如果插件暂无更新,在
android/build.gradle中添加全局配置:
或者针对单个模块精准配置:subprojects { if (project.plugins.hasPlugin('com.android.library')) { android { // 自动生成namespace,或替换为插件实际包名 namespace = project.group ?: "com.${project.name.replace('_', '.')}" } } }project(':appcenter_sdk_flutter') { android { namespace "com.microsoft.appcenter" } }
三、解决MainActivity找不到的致命错误
- 对齐namespace与Manifest配置:在
android/app/build.gradle中确保namespace与AndroidManifest.xml的根包名一致,Flavor仅修改applicationIdSuffix:
Manifest中MainActivity的android { namespace "com.my.app" flavorDimensions "environment" productFlavors { stg { applicationIdSuffix ".stg" } } }android:name保持相对路径:<activity android:name=".MainActivity" android:exported="true"> <!-- 其他配置 --> </activity> - 清理构建缓存:执行以下命令彻底清理后重新构建:
flutter clean flutter build apk --flavor stg
四、修复afterEvaluate报错问题
避免在项目已完成评估阶段调用afterEvaluate,所有项目配置逻辑需放在build.gradle的初始化阶段(如buildscript块之后、subprojects块内),不要在后续执行阶段追加配置。
五、解决OneSignal插件缺失问题
- 在
android/build.gradle的buildscript中添加插件依赖:buildscript { dependencies { classpath 'com.onesignal:onesignal-gradle-plugin:[0.14.0, 0.99.99]' } } - 在
android/app/build.gradle顶部应用插件:apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin' - 确保
pubspec.yaml中OneSignal Flutter插件版本与原生依赖适配,执行flutter pub get同步依赖。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

