java - 添加 'com.amazonaws:aws-java-sdk:1.10.1'时Gradle编译错误

标签 java amazon-web-services android-studio build.gradle

我正在运行 Android Studio,并且我的应用程序一直运行完美,直到我执行以下操作。当我将“compile 'com.amazonaws:aws-java-sdk:1.10.1'”添加到我的 gradle 文件时,在重新构建项目时收到以下警告。

Warning:Dependency commons-logging:commons-logging:1.1.3 is ignored for debug as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages

Warning:Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for debug as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages

Warning:Dependency commons-logging:commons-logging:1.1.3 is ignored for release as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages

Warning:Dependency org.apache.httpcomponents:httpclient:4.3.6 is ignored for release as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class

当我运行应用程序时,我收到上面的 4 个警告,以及运行移动应用程序时收到的 1 个错误:

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 ':mobile:dexDebug'.

我认为这是这里的主要错误:

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 2

更新: nirs回答了这个问题的原因。但是,它仍然无法编译并给出相同的错误。

这是我当前具有 MultiDex 功能的 gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.android.uamp"
        minSdkVersion 21
        targetSdkVersion 22
        versionCode 2
        versionName "1.1"

        // Enabling multidex support.
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    lintOptions {
        abortOnError true
    }
    dexOptions {
        preDexLibraries = false
    }

    afterEvaluate {
        tasks.matching {
            it.name.startsWith('dex')
        }.each { dx ->
            if (dx.additionalParameters == null) {
                dx.additionalParameters = ['--multi-dex']
            } else {
                dx.additionalParameters += '--multi-dex'
            }
        }
    }
}

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services-cast:7.5.0'
    compile 'com.google.android.support:wearable:1.2.0'
    compile 'com.android.support:support-v4:22.2.0'
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:cardview-v7:22.0.0'
    compile 'com.android.support:mediarouter-v7:22.0.0'
    compile(name: 'CastCompanionLibrary-debug', ext: 'aar')
    compile 'com.github.amlcurran.showcaseview:library:5.0.0'
    compile 'com.amazonaws:aws-java-sdk:1.10.1'
    compile 'com.android.support:multidex:1.0.1'
}

在我的主要 Activity 中,我添加了以下内容:

public class UAMPApplication extends MultiDexApplication

而不是这个:

public class UAMPApplication extends Application

我已经添加了 MultiDex 应用程序所需的所有内容,但它仍然无法编译。

最佳答案

看来,当您添加 Amazon SDK 时,您的应用程序已达到 Android 中允许的最大方法计数(超过 65K)。 请参阅此处,了解如何配置您的应用程序以进行多重分包: https://developer.android.com/tools/building/multidex.html

关于java - 添加 'com.amazonaws:aws-java-sdk:1.10.1'时Gradle编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956569/

相关文章:

java - 这个表达的目的

java - 迭代 Collection 或数组对象的常见方法

linux - 如何在关机或重启前在服务器上运行脚本

mysql - 添加触发器以从 Amazon Aurora 调用 Lambda 函数不起作用

java - 使用片段我想获取Android中的当前位置

java - 查询与更新

java - 从文件中分割行并存储为单独的数组值

amazon-web-services - 如何在 AWS Cost Explorer 中发送每月保存的报告

java - 电子邮件发送Android Studio

android - 可搜索微调器使我的应用程序在多任务处理时崩溃