我正在开展的项目有180k
个方法。我已经阅读过博客和文章,其中写道如果您将Min SDK
设置为21
,那么您不需要MultiDex
。但是,如果我从此处删除MultiDex
,则会向我显示65k MultiDex
错误消息。以下是我的gradle
文件。我不知道我是否理解这个概念或其他东西。请指导我。
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId 'com.myapp.app'
minSdkVersion 21
targetSdkVersion 23
versionCode 59
versionName "1.0.1"
multiDexEnabled true
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
dexOptions {
javaMaxHeapSize "4g" //specify the heap size for the dex process
}
lintOptions {
abortOnError false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
答案 0 :(得分:13)
如果您将Min SDK设置为21,那么您就不需要MultiDex
根据"针对Android 5.0及更高版本的" Multidex支持" MultiDex guide中的说明,即使您minSdk 21
,您仍然需要使用multiDexEnabled true
进行编译。您不需要做的是通过以下方式包含MultiDex支持库:
compile 'com.android.support:multidex:1.0.0'
或在MultiDex.install(Context)
课程中致电Application
。
64K方法问题是DEX文件格式的限制,而不是Android平台本身的限制。两个版本之间的区别在于Android 5.0+知道如何自动将多个DEX文件加载到单个OAT文件中并从中加载类,而5.0之前的Android版本需要支持库才能从辅助DEX文件加载类(例如classes2.dex,classes3.dex等。