如何修复Flutter项目build.gradle的android()方法签名异常?
Flutter Android构建失败问题排查与修复
错误信息
- 构建失败提示:FAILURE: 构建过程中出现异常导致失败。
- 错误位置:构建文件
D:...\QRTic\QRTic_Customer\flutter_application_1\android\app\build.gradle第34行 - 核心问题:评估项目':app'时发生错误。
- 报错详情:
No signature of method: build_736eq4o62b75hodqgip5fud2k.android() is applicable for argument types: (build_736eq4o62b75hodqgip5fud2k$_run_closure3) values: [build_736eq4o62b75hodqgip5fud2k$_run_closure3@389d26e3]
错误成因
这个错误的核心是Gradle插件版本不兼容:
- 你使用了已废弃的
kotlin-android-extensions插件,该插件在Kotlin 1.8+版本中已被彻底移除,当前Gradle环境(或Flutter绑定的Gradle版本)不再支持该插件的配置逻辑。 androidExtensions代码块是kotlin-android-extensions的专属配置项,当插件被移除或版本不匹配时,Gradle无法识别该配置,进而导致后续的android{}代码块解析异常,触发方法签名不匹配的错误。
修复操作
步骤1:移除废弃的插件和配置
直接删除以下代码:
apply plugin: 'kotlin-android-extensions' androidExtensions { experimental = true }
步骤2:替换为View Binding(替代kotlin-android-extensions功能)
如果之前依赖 kotlin-android-extensions 的视图绑定能力,需要改用Android官方的View Binding:
- 在
android{}代码块中添加View Binding配置:
android { // ... 保留原有其他配置 buildFeatures { viewBinding true } }
- 项目中原先使用
kotlin-android-extensions的代码,需改为通过View Binding类获取视图(例如:原直接调用textView.text改为binding.textView.text,其中binding是对应布局生成的Binding实例)。
步骤3:清理缓存并同步构建
- 执行命令清理项目缓存:
flutter clean - 在Android Studio中点击「Sync Project with Gradle Files」同步配置
- 重新尝试构建项目
修改后的完整build.gradle示例
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion flutter.compileSdkVersion ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } // 添加View Binding配置 buildFeatures { viewBinding true } defaultConfig { applicationId "com.example.flutter_application_1" minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName } signingConfigs{ debug{ keyAlias 'qrtic' storePassword '123456' storeFile file('qrtic.jks') keypassword '123456' } } buildTypes { release { signingConfig signingConfigs.debug } debug { signingConfig signingConfigs.debug } } }
内容的提问来源于stack exchange,提问作者Q40
相关产品推荐
相关产品推荐

