android - 如何在android studio中的Android 5.0之前的手机上使用android-support-multidex.jar?

标签 android gradle android-multidex

我想在一个APK中使用更多classes.dex文件构建我的应用。因此,我遵循Google帮助页面的说明。对于Android 5.0来说还可以,但是我无法在Android 5.0之前为手机构建。它总是报告:com.android.dex.DexException:--main-dex-list中的类太多,超出了main dex的容量。我不知道要建什么。我的构建gradle:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 21
    //buildToolsVersion "20"
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.android.ccbtest.first"
        minSdkVersion 21
        targetSdkVersion 21
        multiDexEnabled true
    }
    dexOptions {
        preDexLibraries = false
    }
    afterEvaluate {
        tasks.matching {
            it.name.startsWith('dex')
        }.each { dx ->
            if (dx.additionalParameters == null) {
                dx.additionalParameters = []
            }
            dx.additionalParameters += '--multi-dex' // enable multidex

            // optional
            // dx.additionalParameters += "--main-dex list=$projectDir/<filename>".toString() // enable the main-dex-list
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
    }

dependencies {
    compile files('libs/ccbtest.jar')
    compile files('libs/ccbtest1.jar')
    compile files('libs/ccbtest2.jar')
    compile files('libs/ccbtest3.jar')
    compile files('libs/ccbtest4.jar')
    compile files('libs/ccbtest5.jar')
    compile files('libs/ccbtest6.jar')

    // Multi-dex Lib
    compile 'com.android.support:multidex:1.0.0'
}

如果我将minSdkVersion 21从21修改为20。它将失败。

我想在Android 5.0之前的手机中使用。请帮助我。

谢谢。

br

毛重

最佳答案

首先,作为oberflansch commented,删除要传递给afterEvaluate的闭包。一旦指定multiDexEnabled = true,Android gradle插件将自动处理所有dx配置。
Too many classes in --main-dex-list, main dex capacity exceeded错误很可能表明您的主dex文件超过了65536个方法的限制。

我过去曾遇到过相同的问题,最终不得不修补Android gradle插件,使其在主dex中不包括Activity类。这有点hacky,但是效果很好。有关更多说明,请参见my blogpost

关于android - 如何在android studio中的Android 5.0之前的手机上使用android-support-multidex.jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753991/

相关文章:

android - 是否可以从 mp3 文件或文件输入流中获取位图(专辑封面)?

Android交错gridview实现

gradle - Gradle 的 build.gradle 中的 '' 和 ""有什么区别?

android - 在 gradle 中声明 android.support.v7.app

android - VM具有multidex支持,MultiDex支持库被禁用。问题

android - 如何在没有 Gradle 的情况下在 Eclipse 中的 Android 项目上启用 multidex

android - 带有工具栏的菜单中的单选按钮样式不起作用

android - 从 Android 使用 WCF REST 服务非常慢

android - 如何提取一些单元测试来分离 gradle 测试任务?

android - 错误 :Execution failed for task ':app:transformClassesWithDexForDebug'