📅  最后修改于: 2023-12-03 15:03:03.906000             🧑  作者: Mango
在Flutter项目中,当你引入大量第三方库或使用大量代码时,可能会发生Dex分包错误,这意味着Dex方法限制已被超出,因此需要Multidex。
Multidex允许在单包应用程序中分配多个DEX文件。如果您的应用程序中引用的方法数量超过限制,则可能需要使用Multidex。
android {
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
您需要创建一个继承自FlutterApplication的自定义应用程序类,并覆盖attachBaseContext()方法,以告诉应用程序使用Multidex。
import android.content.Context;
import androidx.multidex.MultiDex;
import androidx.multidex.MultiDexApplication;
public class MyApplication extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
<application
android:name=".MyApplication"
...
如果您在自己的应用程序中使用Proguard,请确保添加Multidex设置。
-keep class androidx.multidex.** { *; }
-keep public class * extends android.app.Application {
public void onCreate();
}
现在,您的应用程序已经启用了Multidex。
当您的Flutter应用程序依赖大量第三方库或使用大量代码时,Multidex是一个必不可少的工具。它可以确保您的应用程序不会达到Dex方法限制,并且可以正常运行。 无需对Flutter的核心代码进行任何修改即可使用Multidex。