我想在一个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/