执行flutter pub get遇cloud_firestore需迁移Android embedding v2错误的解决方法
修复"cloud_firestore requires your app to be migrated to the Android embedding v2"错误的步骤
你的Flutter版本3.3.10已经默认支持Android Embedding V2,但项目的Android端配置可能还停留在V1,按以下步骤调整即可解决问题:
1. 调整android/app/build.gradle配置
- 打开
android/app/build.gradle,找到android块下的defaultConfig,确保minSdkVersion至少为21(cloud_firestore 2.x版本要求最低SDK 21):defaultConfig { // ...其他配置 minSdkVersion 21 targetSdkVersion 33 compileSdkVersion 33 } - 检查
dependencies块,确保包含V2 Embedding的依赖,移除旧的V1相关配置:dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "io.flutter:flutter_embedding_release:1.0.0" }
2. 更新AndroidManifest.xml
- 打开
android/app/src/main/AndroidManifest.xml,确保application标签下的主Activity配置为V2 Embedding格式:<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" /> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <!-- 添加V2 Embedding所需的服务 --> <service android:name="io.flutter.embedding.android.FlutterActivityLauncherService" android:exported="false"/> - 删除任何与V1 Embedding相关的配置,比如旧的
FlutterApplication引用或GeneratedPluginRegistrant相关的meta-data。
3. 重构MainActivity
- 如果是Kotlin项目,修改
android/app/src/main/kotlin/[你的包名]/MainActivity.kt,让它继承自FlutterActivity:package com.yourpackage.name import io.flutter.embedding.android.FlutterActivity class MainActivity : FlutterActivity() { } - 如果是Java项目,修改
android/app/src/main/java/[你的包名]/MainActivity.java:package com.yourpackage.name; import io.flutter.embedding.android.FlutterActivity; public class MainActivity extends FlutterActivity { } - 移除任何
GeneratedPluginRegistrant.registerWith(this)的代码,V2 Embedding会自动注册插件。
4. 升级Firebase依赖(可选但推荐)
你的pubspec.yaml里的Firebase依赖版本偏旧,和Flutter 3.3.10存在兼容性风险,建议升级到兼容版本:
firebase_core: ^2.6.0 firebase_auth: ^4.3.0 cloud_firestore: ^4.4.0 firebase_messaging: ^14.2.0 firebase_storage: ^11.0.1
5. 清理并重建项目
依次执行以下命令:
flutter clean flutter pub get flutter run
内容的提问来源于stack exchange,提问作者Specks Dude
相关产品推荐
相关产品推荐

