即使在设置Min SDK 21之后,也会出现MultiDex错误

dev*_*v90 4 performance android proguard gradle android-multidex

我正在研究的项目围绕180k方法.我已阅读博客和文章,其中书面,如果您将Min SDK21,那么你就不需要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 {
} 
Run Code Online (Sandbox Code Playgroud)

Mik*_*ren 13

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

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

compile 'com.android.support:multidex:1.0.0'
Run Code Online (Sandbox Code Playgroud)

或者MultiDex.install(Context)Application课堂上打电话.

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