Flutter集成Cloud Firestore遇minSdk与Multidex双重报错求助
解决Flutter连接Cloud Firestore的系列问题
1. 处理minSdkVersion低于19的问题
打开android/app/build.gradle,找到defaultConfig代码块,直接修改minSdkVersion为19:
defaultConfig { // 保留其他原有配置 minSdkVersion 19 }
2. 解决方法数超过64K的Multidex问题
步骤1:开启Multidex
在上述defaultConfig块中添加multiDexEnabled true:
defaultConfig { // 保留其他原有配置 multiDexEnabled true }
步骤2:添加Multidex依赖
在dependencies代码块中加入Multidex依赖:
dependencies { // 保留其他原有依赖 implementation 'com.android.support:multidex:1.0.3' }
步骤3:配置Application类
- 若没有自定义Application类,修改
AndroidManifest.xml的application标签:
<application android:name="android.support.multidex.MultiDexApplication" <!-- 保留其他原有属性 --> >
- 若有自定义Application类,让它继承
MultiDexApplication,或者在attachBaseContext方法中调用MultiDex.install(this):
public class MyApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
3. 修复Multidex配置后的Firebase认证异常
检查依赖版本一致性
运行flutter pub deps查看依赖树,确保Firebase Auth、Cloud Firestore等相关依赖的版本统一,避免版本冲突导致功能异常。若发现版本不一致,可在android/build.gradle中强制指定统一版本:
ext { firebaseVersion = "29.0.0" // 根据实际兼容版本调整 }
清理缓存并重建
依次执行以下命令:
flutter clean rm -rf android/.gradle flutter pub get flutter run
验证Firebase配置文件
确认android/app目录下的google-services.json是从Firebase控制台下载的最新文件,未被篡改。
检查认证初始化逻辑
确保Firebase初始化代码在main函数中正确执行:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); }
验证Cloud Firestore连接
完成上述步骤后,用以下测试代码验证Firestore读写功能:
// 写入测试数据 FirebaseFirestore.instance.collection('test').doc('demo').set({ 'name': 'Test', 'value': 123 }).then((_) { print('写入成功'); }).catchError((error) { print('写入失败: $error'); }); // 读取测试数据 FirebaseFirestore.instance.collection('test').doc('demo').get().then((doc) { if (doc.exists) { print('读取数据: ${doc.data()}'); } else { print('文档不存在'); } }).catchError((error) { print('读取失败: $error'); });
内容的提问来源于stack exchange,提问作者Syamemera
相关产品推荐
相关产品推荐

