使用MultiDex的最低版本要求是:
compileSdkVersion 21
buildToolsVersion “21.1.0”
可能遇到的问题:NoClassDefFoundError
有些类没有直接引用而并没有打包到dex当中导致classes not found出错,这是在开启multiDex时,多个dex文件中的类是被gradle脚本分配的,而且app在启动时,首先加载的是MainDex。
Android SDK Build Tools 21.1 或者更高版本中的 Gradle Android 插件有对 multidex 的支持。这个插件使用 Proguard 来分析你的项目并在
[buildDir]/intermediates/multi-dex/[buildType]/maindexlist.txt
文件中生成一个 app 启动 classes 的列表。但是这个列表并不是100%准确,可能会丢失一些app启动所需的 classes 。
有时候我们需要设定某些类被放到MainDex中避免NoClassDefFoundError错误, 在build.gradle中开启multiDex,并指定配置文件:
android {
…
defaultConfig {
…
//支持multidex
multiDexEnabled true
multiDexKeepProguard file(‘multiDexKeep.pro’) // keep specific classes using proguard syntax
multiDexKeepFile file(‘multiDexKeep.txt’) // keep specific classes
}