Android Build在':app:dexDebug'异常(库和应用程序项目)

时间:2015-06-10 13:32:32

标签: android exception gradle build

我在我的图书馆项目中使用了一些第三方库。 以下是我的库项目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
    }
}

以下是我的app 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$6.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

我已经更新了'编译'#39;库build.gradle中的行到最新的行。

搜索其他链接后,我仍然找不到问题。它可能与库的版本或多次出现的库条目有关。

还有可能有' creativesdk'库具有较旧的不兼容版本。

请评论可能出错的地方。

提前致谢.....

2 个答案:

答案 0 :(得分:2)

您的应用已达到Android应用方法编号的限制。 您必须使用Multidex(https://developer.android.com/tools/building/multidex.html#mdex-gradle

答案 1 :(得分:0)

Yuriy Mysochenko的回答是完美的。

在阅读答案中的链接时,我发现当我将Google Play服务库链接更改为当前新版本时,错误就开始出现了。

在我们的项目中,我们只使用Google地图功能,我尝试更改Build.gradle中的库链接,如下所示。 (我们可以使用Google Play库的不同组件,而不是使用完整的库)

compile 'com.google.android.gms:play-services-maps:7.5.0'

现在,由于我没有使用完整的Google Play图书馆,因此Android应用方法的数量限制为'没达到。该应用程序构建正确。

所以目前我还没有使用过Multidex。可能在将来我们发展应用时,我们可能不得不使用Multidex。