【问题标题】:Getting MultiDex Error, even after setting Min SDK 21出现 MultiDex 错误,即使在设置 Min SDK 21 之后也是如此
【发布时间】:2017-03-11 14:12:58
【问题描述】:

我正在从事的项目有大约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 {
} 

【问题讨论】:

标签: android performance gradle proguard android-multidex


【解决方案1】:

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

根据MultiDex guide 中的“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 文件中并从中加载类,而 5.0 之前的 Android 版本需要支持库才能从辅助 DEX 文件中加载类(例如classes2.dex、classes3.dex 等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    相关资源
    最近更新 更多