添加';amazonaws:aws java sdk:1.10.1';

添加';amazonaws:aws java sdk:1.10.1';,java,amazon-web-services,android-studio,build.gradle,Java,Amazon Web Services,Android Studio,Build.gradle,我正在运行Android Studio,在我执行以下操作之前,我的应用程序一直运行得非常完美。当我在gradle文件中添加“compile'com.amazonaws:aws java sdk:1.10.1”时,我在重新构建项目时收到以下警告 警告:依赖项公用记录:忽略公用记录:1.1.3 用于调试,因为它可能与提供的内部版本冲突 安卓。如果有问题,请用jarjar重新包装,以便 更改类包 警告:Dependency org.apache.httpcomponents:httpclient:4.

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

警告:依赖项公用记录:忽略公用记录:1.1.3 用于调试,因为它可能与提供的内部版本冲突 安卓。如果有问题,请用jarjar重新包装,以便 更改类包

警告:Dependency org.apache.httpcomponents:httpclient:4.3.6是 忽略调试,因为它可能与内部版本冲突 由Android提供。如果有问题,请重新包装 jarjar更改类包

警告:依赖项公用记录:忽略公用记录:1.1.3 用于发布,因为它可能与内部版本冲突 由Android提供。如果有问题,请重新包装 jarjar更改类包

警告:Dependency org.apache.httpcomponents:httpclient:4.3.6是 在发布时忽略,因为它可能与内部版本冲突 由Android提供。如果有问题,请重新包装 jarjar更改类

当我运行应用程序时,我会收到上述4条警告和运行移动应用程序时出现的1条错误:

意外的顶级异常:
com.android.dex.DexIndexOverflowException:方法ID不在[0]中, 0xffff]:65536 at com.android.dx.merge.dexmmerge$6.updateIndex(dexmmerge.java:502)位于 com.android.dx.merge.dexmerge$idmerge.mergeSorted(dexmerge.java:277) 位于com.android.dx.merge.dexmerge.mergeMethodId(dexmerge.java:491) 位于com.android.dx.merge.dexmerge.mergeDexes(dexmerge.java:168) com.android.dx.merge.dexmmerge.merge(dexmmerge.java:189)位于 com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 位于com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) com.android.dx.command.dexer.Main.run(Main.java:246)位于 com.android.dx.command.dexer.Main.Main(Main.java:215)位于 com.android.dx.command.Main.Main(Main.java:106)错误:执行失败 对于任务“:mobile:dexDebug”

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

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:process'命令 “C:\Program Files\Java\jdk1.7.0\u 79\bin\Java.exe”已完成 非零出口值2

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

这是我当前的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'
}
在我的主要活动中,我添加了以下内容:

public class UAMPApplication extends MultiDexApplication
与此相反:

public class UAMPApplication extends Application

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

当您添加Amazon SDK时,您的应用程序似乎达到了Android允许的最大方法数(超过65K)。 请参见此处,了解如何为multidex配置应用程序:

当您添加Amazon SDK时,您的应用程序似乎达到了Android允许的最大方法数(超过65K)。 请参见此处,了解如何为multidex配置应用程序:
我将回答这个问题,并解释为什么我的gradle会出错。(黑客帮我弄明白了原因)。这不是一个多指标问题。 在我的gradle文件中,我需要编译Android SDK而不是Java SDK。 以下是我所做的更改:

build.gradle之前

...
    compile 'com.amazonaws:aws-java-sdk:1.10.1'
...
build.gradle之后

...
    compile 'com.amazonaws:aws-android-sdk-core:2.2.4'
    compile 'com.amazonaws:aws-android-sdk-s3:2.2.4'
...

我的程序现在运行得很好!希望这有帮助。最后,要知道这是否真的是一个多索引问题,请使用此程序告诉您:来自GitHub。

我将回答此问题并解释gradle出错的原因。(黑客帮我弄明白了原因)。这不是一个多指标问题。 在我的gradle文件中,我需要编译Android SDK而不是Java SDK。 以下是我所做的更改:

build.gradle之前

...
    compile 'com.amazonaws:aws-java-sdk:1.10.1'
...
build.gradle之后

...
    compile 'com.amazonaws:aws-android-sdk-core:2.2.4'
    compile 'com.amazonaws:aws-android-sdk-s3:2.2.4'
...

我的程序现在运行得很好!希望这有帮助。最后,要知道这是否真的是一个多索引问题,请使用此程序告诉您:来自GitHub。

谢谢。我真的很想限制链接中讨论的依赖关系,但我不确定要去哪里才能做到这一点。我会排除依赖项的某些部分吗?或者你知道什么网站可以帮我做这件事吗?除非你有你不真正使用的依赖项/可以剥离并只获取相关代码,否则我建议转到multi-dex路径:谢谢。我真的很想限制链接中讨论的依赖关系,但我不确定要去哪里才能做到这一点。我会排除依赖项的某些部分吗?或者你知道什么网站可以帮我解决这个问题吗?除非你有依赖关系,你不真正使用/可以剥离并只获取相关代码,否则我建议转到multi-dex路径: