📜  multidex flutter (1)

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

Multidex Flutter

在Flutter项目中,当你引入大量第三方库或使用大量代码时,可能会发生Dex分包错误,这意味着Dex方法限制已被超出,因此需要Multidex。

Multidex允许在单包应用程序中分配多个DEX文件。如果您的应用程序中引用的方法数量超过限制,则可能需要使用Multidex。

如何在Flutter中使用Multidex
1. 在项目的android/app/build.gradle文件中添加Multidex依赖项。
android {
  defaultConfig {
    // Enabling multidex support.
    multiDexEnabled true
  }
  ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}
2. 创建一个自定义应用程序类

您需要创建一个继承自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);
    }
}
3. 在AndroidManifest.xml文件中设置自定义应用程序类
<application
        android:name=".MyApplication"
        ...
4. 添加Proguard规则

如果您在自己的应用程序中使用Proguard,请确保添加Multidex设置。

-keep class androidx.multidex.** { *; }
-keep public class * extends android.app.Application {
    public void onCreate();
}

现在,您的应用程序已经启用了Multidex。

结论

当您的Flutter应用程序依赖大量第三方库或使用大量代码时,Multidex是一个必不可少的工具。它可以确保您的应用程序不会达到Dex方法限制,并且可以正常运行。 无需对Flutter的核心代码进行任何修改即可使用Multidex。