Flutter添加Firebase依赖后执行flutter run出现64K方法超限错误如何解决
问题本质
Android平台单个dex文件最多只能容纳65536个方法引用,引入Firebase等重型依赖后项目总方法数超过该阈值,就会触发构建失败。
解决方案
方案1:启用Multidex(通用解法,所有场景适用)
若minSdkVersion ≥ 21(即最低支持Android 5.0及以上)
仅需修改android/app/build.gradle配置即可:
android { defaultConfig { // 保留原有其他配置 minSdkVersion 21 multiDexEnabled true // 新增这一行配置 } }
修改完成后重新执行flutter run即可正常构建。
若minSdkVersion < 21
需要额外添加依赖并修改Application配置:
- 同样先在
android/app/build.gradle的defaultConfig块添加multiDexEnabled true - 在同文件的dependencies块添加multidex依赖:
dependencies { // 保留原有其他依赖 implementation "androidx.multidex:multidex:2.0.1" }
- 修改Application配置:
- 若项目没有自定义Application类,打开
android/app/src/main/AndroidManifest.xml,修改标签属性:
<application android:name="androidx.multidex.MultiDexApplication" <!-- 保留其他原有属性 --> > <!-- 其他原有配置 --> </application>- 若项目已有自定义Application类,可让自定义类继承
MultiDexApplication,或在自定义类的attachBaseContext方法中调用MultiDex.install(this)完成初始化。
- 若项目没有自定义Application类,打开
方案2:代码压缩优化(可选,可减少包体积同时规避64K问题)
开启代码混淆和无用资源剔除,减少最终打包的方法总数:
修改android/app/build.gradle的buildTypes配置:
buildTypes { release { // 保留原有其他配置 minifyEnabled true // 开启代码压缩,剔除无用代码 shrinkResources true // 开启无用资源剔除 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
该方案仅对release包生效,debug模式下默认不会开启压缩,所以如果debug模式也出现64K报错,还是需要先启用Multidex。
内容的提问来源于stack exchange,提问作者anchxt
相关产品推荐
相关产品推荐

