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 及以下:必须手动配置

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

相关推荐
alexhilton3 天前
用Konsist与Lint强制执行设计系统契约
android·kotlin·android jetpack
传奇开心果编程4 天前
组合优先开发范式:从汉字造字原理到声明式UI组件组合思想
android·flutter·ios·swiftui·移动开发·harmonyos·android jetpack
JMchen5 天前
【Jetpack 内核实战 08 】:组件整合——DataStore + Room 构建离线优先架构
架构·kotlin·android jetpack
Android打工仔5 天前
Compose 中何时该用 padding,何时该用 offset
android·android jetpack
hai_android11 天前
Android 设备锁定:Kiosk Mode 实战
android·java·android jetpack
stevenzqzq11 天前
Android Jetpack Compose 列表开发指南:为什么你不需要再为底部 Item 写额外间距
android·android jetpack
JMchen12 天前
【Jetpack 内核实战 02】ViewModel:生命周期管理与数据持久化核心实战
kotlin·android studio·android jetpack
alexhilton13 天前
Room Fts4:全文搜索替代 SQL LIKE
android·kotlin·android jetpack
hai_android13 天前
把 Android App 打包成系统应用(System App)
android·kotlin·android jetpack