Flutter调试报错:':advertising_id:compileDebugKotlin'任务执行失败
解决advertising_id-2.2.0插件Android端类型不匹配构建失败问题
问题概述
- 使用Flutter 3.3.10(stable通道,Dart 2.18.6)运行客户提供的代码时,调试、构建均触发报错
- 已执行
flutter clean、flutter pub get,问题未解决 - 核心错误:advertising_id-2.2.0插件Android端Kotlin文件第24行出现类型不匹配——推断类型为
Activity?但方法需要Activity,导致:advertising_id:compileDebugKotlin任务执行失败,Gradle任务assembleDebug退出码为1
解决方案
1. 升级advertising_id插件版本
旧版本的advertising_id:2.2.0未适配Kotlin空安全规范,与当前Flutter版本的Android嵌入逻辑冲突。直接升级到插件最新稳定版即可解决:
- 修改项目根目录下的
pubspec.yaml,将插件依赖改为:advertising_id: ^最新版本号 - 执行
flutter pub get更新依赖
2. 手动修改插件Kotlin代码(无法升级插件时使用)
若因项目限制无法升级插件,可直接修改本地插件的Kotlin代码解决类型不匹配问题:
- 找到本地插件路径:
./.pub-cache/hosted/pub.dev/advertising_id-2.2.0/android/src/main/kotlin/com/lykhonis/advertising_id/AdvertisingIdPlugin.kt - 定位到第24行,将获取Activity的代码修改为非空断言或安全处理:
- 非空断言(确认Activity不会为空时使用):
val activity = registrar.activity()!! - 异常处理(避免空指针风险):
val activity = registrar.activity() ?: throw IllegalStateException("无法获取Activity实例")
- 非空断言(确认Activity不会为空时使用):
- 重新执行构建命令
注意事项
- 手动修改插件代码后,若再次执行
flutter pub get或flutter pub upgrade,修改会被覆盖,需重新操作 - 优先选择升级插件版本,这是最稳定的解决方案,能避免后续其他兼容问题
内容的提问来源于stack exchange,提问作者Specks Dude
相关产品推荐
相关产品推荐

