运行flutter pub get报错提示需迁移Android embedding v2如何解决
问题表现
执行flutter pub get命令时抛出如下错误:
The
device_info_plusplugin requires your app to be migrated to the Android embedding v2. Follow the steps on the Android project migration guide and re-run this command.
已按官方迁移要求完成所有Android embedding v2相关配置调整、项目代码和依赖均更新到最新状态后,报错仍未消失,公开渠道无对应可行解决方案。
可行解决步骤
按优先级从高到低依次排查:
- 校验manifest元数据配置(最高频漏项)
打开android/app/src/main/AndroidManifest.xml,检查<application>标签内部是否存在如下配置项,缺失则直接补全:
多数人迁移时仅调整了MainActivity代码,漏加该元数据是触发该报错的最常见原因。<meta-data android:name="flutterEmbedding" android:value="2" /> - 全量清理缓存避免误判
旧的构建缓存、Pub依赖缓存、版本锁文件残留的旧校验标记会导致误报,按顺序执行操作清理:
手动删除项目根目录下的flutter cleanpubspec.lock文件,再删除Pub全局缓存目录下所有device_info_plus相关的缓存文件夹,最后重新执行flutter pub get即可。 - 校验MainActivity代码正确性
打开对应包路径下的MainActivity.kt(Java项目对应MainActivity.java),确认类继承的是io.flutter.embedding.android.FlutterActivity,而非旧版的io.flutter.app.FlutterActivity;同时删除文件里残留的旧版GeneratedPluginRegistrant手动注册代码,v2嵌入模式下插件注册为自动执行,残留旧版注册逻辑会导致嵌入版本校验失败。 - 排查老旧依赖的兼容问题
如果项目中存在其他未适配Android embedding v2的第三方插件,会导致整个项目的嵌入版本被判定为v1,触发该报错。执行flutter pub outdated命令检查所有依赖的版本状态,将停更时间超过2年、未适配Flutter 3.x版本的老旧插件替换为社区维护的适配版本,或直接移除无用的老旧依赖。 - 临时规避方案
以上步骤均无效时,可在pubspec.yaml中锁定device_info_plus到不强制校验嵌入版本的最后一个稳定版本:
锁定版本后暂时不要执行device_info_plus: 8.2.2flutter pub upgrade升级该依赖,等项目内所有依赖完成v2适配后再尝试升级到最新版。
内容的提问来源于stack exchange,提问作者Tefa
相关产品推荐
相关产品推荐

