我想在一个apk中使用更多classes.dex文件构建我的应用程序。所以我按照谷歌帮助页面的说明。这对Android 5.0来说还可以,但我无法在Android 5.0之前为手机构建。它始终报告:com.android.dex.DexException: - main-dex-list中的类太多,超出了主要的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
mwt
。
答案 0 :(得分:0)
首先,作为oberflansch commented,删除您传递给multiDexEnabled = true
的闭包。一旦您指定Too many classes in --main-dex-list, main dex capacity exceeded
,Android gradle插件将自动处理所有dx配置。
Private Sub ButtonOk_Click(sender As System.Object, e As System.EventArgs) Handles ButtonOk.Click
FormNoveZaznamy.DataGridViewUrazy.Rows(0).Cells(7).Value = "Test"
Me.Close()
End Sub
错误很可能表示您的 主要dex文件 超出了65536方法限制。
我在过去遇到过同样的问题,最终不得不修补Android gradle插件,不在main dex中包含Activity类。它有点hacky,但效果很好。有关详细说明,请参阅my blogpost。