Flutter构建APK出现No signature of method android()报错
Flutter 构建release APK触发android配置块签名方法不存在报错
报错信息
执行assembleRelease任务构建失败,退出码1,错误指向android/app/build.gradle第34行的android配置块,完整报错如下:
FAILURE: Build failed with an exception. * Where: Build file 'F:\MyProject\android\app\build.gradle' line: 34 * What went wrong: A problem occurred evaluating project ':app'. > No signature of method: build_7lhgwn6g10f1dc3sk72t2tmig.android() is applicable for argument types: (build_7lhgwn6g10f1dc3sk72t2tmig$_run_closure2) values: [build_7lhgwn6g10f1dc3sk72t2tmig$_run_closure2@9578636] * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 1s Running Gradle task 'assembleRelease'... 2.787ms Gradle task assembleRelease failed with exit code 1 Process finished with exit code 1
现有环境
- Flutter检测无异常,版本为3.1.0-9.0.pre dev通道,Dart版本2.18.0
- 构建环境:Gradle 7.4.2、Kotlin 1.5.31、JVM 18.0.1.1、Windows 10
问题根因
报错本质是Gradle无法识别android配置块,由4类问题共同触发:
- 插件加载顺序错误,Kotlin安卓插件加载时机晚于Flutter Gradle插件,导致安卓扩展块初始化异常
- 依赖严重冲突:同时引入旧版Support库和AndroidX库,Gradle7+默认不支持两者混用
- 存在已被Gradle7移除的废弃配置,以及Firebase依赖顺序错误、重复引入废弃组件问题
- JDK版本过高,Flutter 3.1 dev版本与JDK18存在类加载兼容问题
修复步骤
- 调整插件加载顺序
打开android/app/build.gradle,将Kotlin插件的加载语句移到Flutter Gradle插件之前,修正后插件配置段如下:apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - 清理冲突配置和依赖
- 删除
android > buildTypes > release块下的useProguard true配置,Gradle7+默认使用R8作为混淆器,该配置已被正式移除,保留会触发构建异常 - 替换所有旧版Support库依赖为AndroidX版本:
- 删除
implementation 'com.android.support:multidex:1.0.3',替换为implementation 'androidx.multidex:multidex:2.0.1' - 删除两个旧版Support测试依赖,替换为对应AndroidX版本:
androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
- 删除
- 修正Firebase依赖配置:将Firebase BOM依赖移到所有Firebase组件最前面,删除已废弃的
firebase-core依赖(BOM会自动统一管理所有Firebase组件版本,无需单独引入核心包),修正后Firebase相关依赖如下:implementation platform('com.google.firebase:firebase-bom:30.2.0') implementation 'com.google.firebase:firebase-messaging'
- 删除
- 修复JDK版本兼容问题
当前使用的JDK18与现有Flutter、Gradle版本存在类加载兼容问题,将构建用JDK切换为JDK17,在Android Studio的SDK配置中指定对应JDK路径即可。 - 校验根级Gradle配置
打开android/build.gradle,确认buildscript依赖中已添加com.google.gms:google-services:4.3.13版本的classpath,该版本适配Gradle7.x,不会触发插件加载异常。
所有修改完成后,执行flutter clean清理历史构建缓存,再重新执行release构建命令即可正常出包。
内容的提问来源于stack exchange,提问作者DevMMO
相关产品推荐
相关产品推荐

