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

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

相关推荐
我命由我1234520 小时前
Kotlin 开发 - Kotlin 反引号转义关键字
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
alexhilton3 天前
AppFunctions:让你的Android应用更容易被AI智能体发现
android·kotlin·android jetpack
我命由我123454 天前
Android 开发,FragmentPagerAdapter 的 isViewFromObject 方法问题
android·java-ee·kotlin·android studio·android jetpack·android-studio·android runtime
帅次4 天前
Kotlin MVVM 实战入门:从分层到状态闭环
android·kotlin·android studio·android jetpack
杊页5 天前
系列三:组件化与模块化进阶 | 第8篇 组件化与模块化核心实战区别:大型项目架构的必由之路
android·android jetpack
QING6186 天前
Android面试 —— 八股文(一)
android·面试·android jetpack
我命由我123456 天前
Android Service - Service 生命周期变化、Service 与 Activity 双向交互
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
我命由我123457 天前
Android 开发问题:Could not find com.github.PicnicSupermarket:FingerPaintView:1.2.
android·github·android studio·安卓·android jetpack·android-studio·android runtime
QING6187 天前
如何使用Compose 绘制提升性能 —— 新手指南
kotlin·android jetpack·canvas
我命由我123457 天前
Android 开发问题:MlKitException: An internal error occurred during initialization.
android·java·java-ee·android jetpack·android-studio·androidx·android runtime