Flutter项目集成Firebase报错:minSdk版本过低及Dex方法数超限
Flutter Firebase 依赖编译错误解决方案
问题背景
完成Flutter项目的Firebase基础配置后,引入以下Firebase依赖:
firebase_core: ^2.14.0 firebase_auth: ^4.6.3 cloud_firestore: ^4.8.1
运行模拟器时先后出现两个编译错误:
- minSdkVersion 16低于cloud_firestore要求的最低版本19,导致Manifest合并失败
- 修改minSdkVersion为19后,出现Dex文件方法数超过64K限制的错误
解决方案
1. 修复minSdkVersion版本不兼容
打开项目中的android/app/build.gradle文件,找到defaultConfig代码块,将原有的minSdkVersion flutter.minSdkVersion替换为minSdkVersion 19:
defaultConfig { minSdkVersion 19 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName }
2. 启用Multidex解决方法数超限
方式一:自动配置(推荐)
在终端执行以下命令,让Flutter工具自动添加Multidex支持:
flutter run --multidex
执行后会自动生成android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java文件,并完成相关配置。
方式二:手动配置
如果自动配置失败,可手动完成以下步骤:
- 打开
android/app/build.gradle,在dependencies块中添加Multidex依赖:dependencies { implementation 'com.android.support:multidex:1.0.3' } - 在
defaultConfig块中启用Multidex:defaultConfig { minSdkVersion 19 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName multiDexEnabled true // 添加这一行 } - 配置AndroidManifest.xml:
- 若没有自定义Application类,修改
application标签的android:name属性:<application android:name="android.support.multidex.MultiDexApplication" <!-- 其他原有属性 --> > - 若有自定义Application类,让其继承
MultiDexApplication,或在attachBaseContext方法中调用MultiDex.install(this):
然后在Manifest中指定该自定义类:public class MyApplication extends FlutterApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }<application android:name=".MyApplication" <!-- 其他原有属性 --> >
- 若没有自定义Application类,修改
完成以上配置后,重新运行项目即可解决编译错误。
内容的提问来源于stack exchange,提问作者Ahmad Maaz
相关产品推荐
相关产品推荐

