Android 构建在“:app:dexDebug”处失败,出现异常(库和应用程序项目)
Android Build failed at ':app:dexDebug' with exception ( library and app project )
我在我的图书馆项目中使用了一些第三方图书馆。
以下是我的图书馆项目build.gradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//dexOptions {
// javaMaxHeapSize "4g"
//}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.adobe.creativesdk:image:4.0.0'
compile 'com.google.android.gms:play-services:7.5.0'
}
repositories {
jcenter()
mavenCentral()
maven {
//url "${project.rootDir}/mobilexpresslib/creativesdk-repo"
url "${project.projectDir}/creativesdk-repo"
//java.lang.System.println(${project(':mobilexpresslib').projectDir});
// println "[$project.rootDir]"
println "[$project.projectDir]"
// url "${project(':mobilexpresslib').projectDir}/creativesdk-repo"
//ADD THE CORRECT LOCATION OF THE CREATIVESDK LIBRARY FILES
}
}
以下是我的应用build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.dgflick.mxpro.mobilexpresspro"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':mobilexpressprolib')
}
repositories {
jcenter()
mavenCentral()
maven {
//url "${project.rootDir}/creativesdk-repo"
//ADD THE CORRECT LOCATION OF THE CREATIVESDK LIBRARY FILES
url "${project(":mobilexpressprolib").projectDir}/creativesdk-repo"
}
}
今天使用 Android SDK 更新 Android Studio 后,出现以下错误。
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
at com.android.dx.merge.DexMerger.updateIndex(DexMerger.java:502)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_71\bin\java.exe'' finished with non-zero exit value 2
Information:BUILD FAILED
我已经将库 build.gradle 中的 'compile' 行更新为最新的。
找了其他链接,还是没找到问题所在。可能与库版本或库条目多次出现有关。
也有可能 'creativesdk' 库有旧的不兼容版本。
请评论可能出错的地方。
提前致谢.....
您的应用已达到 Android 应用方法数量的限制。
你必须使用 Multidex (https://developer.android.com/tools/building/multidex.html#mdex-gradle)
Yuriy Mysochenko 的回答是完美的。
在阅读答案中的 link 时,我发现,当我将 Google 播放服务库 link 更改为当前新版本时,错误开始出现。
在我们的项目中,我们只使用 Google 地图功能,我尝试更改 Build.gradle 中的库 link,如下所示。 (我们可以使用 Google 播放库的不同组件,而不是使用完整库)
compile 'com.google.android.gms:play-services-maps:7.5.0'
现在,由于我没有使用完整的 Google 播放库,因此未达到 'the limit of Android app methods number'。该应用程序构建正确。
所以目前我还没有使用Multidex。可能将来当我们开发应用程序时,我们可能必须使用 Multidex。
我在我的图书馆项目中使用了一些第三方图书馆。 以下是我的图书馆项目build.gradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//dexOptions {
// javaMaxHeapSize "4g"
//}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.adobe.creativesdk:image:4.0.0'
compile 'com.google.android.gms:play-services:7.5.0'
}
repositories {
jcenter()
mavenCentral()
maven {
//url "${project.rootDir}/mobilexpresslib/creativesdk-repo"
url "${project.projectDir}/creativesdk-repo"
//java.lang.System.println(${project(':mobilexpresslib').projectDir});
// println "[$project.rootDir]"
println "[$project.projectDir]"
// url "${project(':mobilexpresslib').projectDir}/creativesdk-repo"
//ADD THE CORRECT LOCATION OF THE CREATIVESDK LIBRARY FILES
}
}
以下是我的应用build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.dgflick.mxpro.mobilexpresspro"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':mobilexpressprolib')
}
repositories {
jcenter()
mavenCentral()
maven {
//url "${project.rootDir}/creativesdk-repo"
//ADD THE CORRECT LOCATION OF THE CREATIVESDK LIBRARY FILES
url "${project(":mobilexpressprolib").projectDir}/creativesdk-repo"
}
}
今天使用 Android SDK 更新 Android Studio 后,出现以下错误。
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
at com.android.dx.merge.DexMerger.updateIndex(DexMerger.java:502)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_71\bin\java.exe'' finished with non-zero exit value 2
Information:BUILD FAILED
我已经将库 build.gradle 中的 'compile' 行更新为最新的。
找了其他链接,还是没找到问题所在。可能与库版本或库条目多次出现有关。
也有可能 'creativesdk' 库有旧的不兼容版本。
请评论可能出错的地方。
提前致谢.....
您的应用已达到 Android 应用方法数量的限制。 你必须使用 Multidex (https://developer.android.com/tools/building/multidex.html#mdex-gradle)
Yuriy Mysochenko 的回答是完美的。
在阅读答案中的 link 时,我发现,当我将 Google 播放服务库 link 更改为当前新版本时,错误开始出现。
在我们的项目中,我们只使用 Google 地图功能,我尝试更改 Build.gradle 中的库 link,如下所示。 (我们可以使用 Google 播放库的不同组件,而不是使用完整库)
compile 'com.google.android.gms:play-services-maps:7.5.0'
现在,由于我没有使用完整的 Google 播放库,因此未达到 'the limit of Android app methods number'。该应用程序构建正确。
所以目前我还没有使用Multidex。可能将来当我们开发应用程序时,我们可能必须使用 Multidex。