0

我想在一个 apk 中使用更多 classes.dex 文件构建我的应用程序。所以我按照谷歌帮助页面的说明进行操作。安卓 5.0 没问题,但我不能为安卓 5.0 之前的手机构建。它总是报告:com.android.dex.DexException: Too many classes in --main-dex-list, main dex容量超出。我不知道热建设。我的构建等级:

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

重量

.

4

1 回答 1

0

首先,正如 oberflansch评论的那样,删除您传递给的闭包afterEvaluate。一旦你指定了multiDexEnabled = true.

Too many classes in --main-dex-list, main dex capacity exceeded错误很可能表明您的主 dex 文件超出了 65536 方法限制。

我过去也遇到过同样的问题,最终不得不修补 Android gradle 插件,使其不在 main dex 中包含 Activity 类。这有点hacky,但效果很好。请参阅我的博文以获取更多说明。

于 2015-09-25T11:29:00.837 回答