即使设置最小SDK为21,仍然出现MultiDex错误

4
我正在处理一个拥有约 180k 方法的IT技术项目。在阅读了一些博客和文章后,我得知如果将 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 {
} 

你参考了哪些博客? - Sanjeet
http://blog.safedk.com/technology/solving-androids-65k-limit-part-2-the-lollipop-generation/ - dev90
1个回答

18
如果您将Min SDK设置为21,则不需要使用MultiDex。
根据MultiDex指南中的“Android 5.0及更高版本的Multidex支持”说明,即使您的minSdk是21,仍然需要使用multiDexEnabled true进行编译。您不需要通过以下方式包含MultiDex支持库:
compile 'com.android.support:multidex:1.0.0'

请在您的应用程序类中调用MultiDex.install(Context),或者使用支持库以加载来自次要DEX文件(例如classes2.dex、classes3.dex等)的类。这是因为64K方法问题是DEX文件格式的限制,而不是Android平台本身的限制。 Android 5.0+版本可以自动将多个DEX文件加载到单个OAT文件中,并从中加载类,而Android 5.0之前的版本需要支持库才能加载来自次要DEX文件的类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接