📜  flutter multidex = true (1)

📅  最后修改于: 2023-12-03 15:00:47.914000             🧑  作者: Mango

Flutter 使用 Multidex

在 Android 平台上,单个 Dex 文件有 64K 方法限制,如果应用中方法超过限制将导致构建失败。具体错误信息如下:

com.android.dex.DexIndexOverflowException: Cannot merge new index [xxxxxx] into a non-jumbo instruction!

这时需要开启 MultiDex 来允许应用中包含多个 dex 文件。

配置 MultiDex

build.gradle 文件中添加如下依赖:

android {
    defaultConfig {
        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}
初始化 MultiDex

在 Flutter 应用的入口文件(如 lib/main.dart)中添加如下代码,来初始化 MultiDex:

import android.content.Context
import androidx.multidex.MultiDex

class App : FlutterApplication() {
    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }
}
注意事项
  • 如果应用中 build.gradle 使用了 minifyEnabled true,则需要向 proguard-rules.pro 文件中添加 Multidex 的规则,否则可能导致 DexIndexOverflowException 错误。可参考如下规则:
-keep class android.support.multidex.** {
  *;
}
  • MultiDex 可以解决方法数量过多的问题,但也会增加应用加载时间,因此建议应避免过于臃肿的应用。