MultiDex的使用:

一、先搞懂:MultiDex 是干嘛的?

一句话原理

Android 单个 dex 文件方法数最多只能有 65535 个(64k 限制)。当你的项目:

  • 依赖很多库
  • 代码越来越多
  • 方法数超了 65535

安装、运行时就会崩溃!

MultiDex 就是让 APP 支持多个 dex 文件,突破 64K 方法数限制。


二、哪些 Android 版本需要配置?

1. Android 5.0 以上(API 21+)

✅ **系统原生支持 MultiDex****不需要你做任何配置!**系统自动支持多个 dex。

2. Android 4.4 以下(API 20 及以下)

❌ 系统不支持必须手动配置 MultiDex!


三、现在项目怎么配?(2025 最标准配置)

现在的项目minSdkVersion 基本都是 21 以上,所以:

✔ 绝大多数新项目:完全不用配 MultiDex!


四、但如果你的 minSdk <= 20(老项目)

必须按下面配置:

1. build.gradle(Module 级别)

gradle

arduino 复制代码
android {
    defaultConfig {
        // 开启 MultiDex
        multiDexEnabled true
    }
}

dependencies {
    // 多 dex 依赖(仅低版本需要)
    implementation "androidx.multidex:multidex:2.0.1"
}

2. 自定义 Application

方式 1:继承 MultiDexApplication

kotlin

kotlin 复制代码
class MyApplication : MultiDexApplication() {
}

方式 2:不继承,手动安装

kotlin

kotlin 复制代码
class MyApplication : Application() {
    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        // 安装 MultiDex
        MultiDex.install(this)
    }
}

3. AndroidManifest.xml

xml

ini 复制代码
<application
    android:name=".MyApplication"
    ...>
</application>

五、最关键结论(你必须记住)

1. minSdkVersion >= 21

不用配 MultiDex系统自带支持

2. minSdkVersion <= 20

必须配 MultiDex

3. 现在 99% 的新项目

minSdk 都是 21、23、24MultiDex 已经不用管了!


六、你最可能遇到的问题

报错:

plaintext

css 复制代码
Cannot fit requested classes in a single dex file

意思:方法数超过 64K

解决:

gradle

arduino 复制代码
multiDexEnabled true

七、终极极简总结

MultiDex 作用:突破 65535 方法数限制

Android 5.0+:系统自带,不用配

Android 4.4 及以下:必须手动配置

现在新项目:基本不用管!

相关推荐
木易士心1 天前
Jetpack Compose 深度解析:初始组合与重组的底层奥秘
android jetpack
alexhilton5 天前
MVI模式的完整历史、误解和现代Android范式
android·kotlin·android jetpack
我命由我123455 天前
集成 mupdf-android 的示例做为模块使用报错,程序包android.support.v4.view不存在
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
我命由我123458 天前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
MiyamuraMiyako8 天前
Compose:从自动滚动到双锚点 LazyLayout
android·android jetpack
杉氧11 天前
Compose 渲染内核 (3):Slot Table 与 Gap Buffer —— 极速重组的数学艺术
android·架构·android jetpack
alexhilton12 天前
Kotlin DSL深度解析:从Gradle脚本到构建你自己的DSL
android·kotlin·android jetpack
杉氧14 天前
Framework 补完计划 (2):BufferQueue 与 SurfaceFlinger —— 像素的跨进程“接力赛”
android·架构·android jetpack
我命由我1234515 天前
Android 开发问题:ClickableSpan 的点击事件没有生效
java·java-ee·android studio·android jetpack·android-studio·android runtime
我命由我1234515 天前
Android 构建项目问题:XML 片段出错,com.ctc.wstx.exc.WstxUnexpectedCharException
android·xml·android studio·android jetpack·android-studio·android runtime