Flutter项目pub get报错 需迁移Android embedding V2如何处理
问题复现场景
执行flutter pub get时进程以退出码1终止,核心报错为应用使用的旧版Android embedding已被废弃,firebase_core等新插件强制要求使用Android embedding V2才可正常编译运行。
- 触发命令:
C:\src\flutter\bin\flutter.bat --no-color pub get - 执行位置:项目source_code目录
- 执行耗时:34.3s
- 终端返回核心提示:
当前应用使用的Android embedding版本已废弃,为避免意外运行时故障或后续构建失败,需将应用迁移至V2 embedding
firebase_core插件要求应用必须迁移至Android embedding v2,请完成迁移操作后重新运行命令 - 报错截图:

修复操作步骤
按以下顺序完成迁移即可解决问题,全程不需要额外创建新项目:
- 修改Manifest配置
- 打开路径
android/app/src/main/AndroidManifest.xml - 找到
<application>节点下旧版embedding配置项,直接删除:<meta-data android:name="flutterEmbedding" android:value="1" /> - 在同位置添加V2版本的embedding声明:
<meta-data android:name="flutterEmbedding" android:value="2" /> - 检查启动Activity配置,将原有引用
io.flutter.app.FlutterActivity的声明替换为io.flutter.embedding.android.FlutterActivity,如果<application>标签上配置了android:name="io.flutter.app.FlutterApplication",直接删除该属性即可。
- 打开路径
- 调整MainActivity代码
- 按开发语言找到对应入口文件:
- Kotlin:
android/app/src/main/kotlin/[你的项目包名路径]/MainActivity.kt - Java:
android/app/src/main/java/[你的项目包名路径]/MainActivity.java
- Kotlin:
- 删除旧版导包语句:
import io.flutter.app.FlutterActivity - 新增V2版本导包语句:
import io.flutter.embedding.android.FlutterActivity - 确认MainActivity类直接继承上述导入的FlutterActivity即可,删除所有手动调用
GeneratedPluginRegistrant.registerWith()注册插件的旧逻辑,V2版本会自动完成插件注册。
- 按开发语言找到对应入口文件:
- 校验Gradle配置
- 打开
android/app/build.gradle文件 - 确认
minSdkVersion数值≥16,满足firebase_core插件的最低版本要求 - 建议将
compileSdkVersion升级到33及以上,和当前主流Flutter插件的编译要求匹配 - 如果项目自定义了Application类,将继承的父类从旧版
io.flutter.app.FlutterApplication替换为io.flutter.embedding.android.FlutterApplication
- 打开
- 清理缓存重跑命令
在项目根目录依次执行以下命令:
如果执行后依然有缓存类报错,直接删除flutter clean flutter pub getandroid/.gradle目录后重新执行构建即可。
注意:迁移完成后如果有部分老插件出现兼容问题,将对应插件升级到最新稳定版本即可适配V2 embedding。
内容的提问来源于stack exchange,提问作者Ali Waqas
相关产品推荐
相关产品推荐

