即使设置了最小SDK 21,也会出现MultiDex错误



我正在研究的项目有围绕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 {
} 

如果您将Min SDK设置为21,则不需要MultiDex

根据Multidex指南中的"Multidex对Android 5.0及更高版本的支持"说明,即使您使用minSdk 21,那么您仍然需要使用multiDexEnabled true进行编译。你不需要做的是通过以下方式包含MultiDex支持库:

compile 'com.android.support:multidex:1.0.0'

或在Application类中调用MultiDex.install(Context)

64K方法问题是DEX文件格式的限制,而不是Android平台本身。两个版本的不同之处在于Android 5.0+知道如何自动将多个DEX文件加载到单个OAT文件中并从中加载类,而Android 5.0之前的版本需要支持库才能从次要DEX文件中加载类(例如classes2.dex, classes3.dex等)。

相关内容

  • 没有找到相关文章

最新更新