首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加“com.amazonaws:aws:1.10.1”时出现的分级编译错误

添加“com.amazonaws:aws:1.10.1”时出现的分级编译错误
EN

Stack Overflow用户
提问于 2015-06-20 16:51:07
回答 2查看 1.8K关注 0票数 0

我正在运行Android,我的应用程序一直运行得很完美,直到我完成以下操作。当我在我的gradle文件中添加“编译‘com.amazonaws:aws:1.10.1’”时,当我重新构建一个项目时,我会收到以下警告。

警告::conflicting :1.1.3在调试时被忽略,因为它可能与Android提供的内部版本相冲突。如果出现问题,请用jarjar重新打包,以更改类包。 警告:Dependencyorg.apache.httpComponents:httpclient:4.3.6在调试时被忽略,因为它可能与Android提供的内部版本相冲突。如果出现问题,请用jarjar重新打包,以更改类包。 警告::conflicting :1.1.3在发布时被忽略,因为它可能与Android提供的内部版本相冲突。如果出现问题,请用jarjar重新打包,以更改类包。 警告:Dependencyorg.apache.httpComponents:httpclient:4.3.6在发布时被忽略,因为它可能与Android提供的内部版本相冲突。如果出现问题,请用jarjar重新打包,以更改类。

当我运行这个应用程序时,我会收到像上面这样的4个警告,在运行我的移动应用程序时得到一个错误:

意外的顶级异常: com.android.dex.DexIndexOverflowException:方法ID不在0,com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502),com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277),com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491),com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168),com.android.dx.merge.DexMerger.merge(DexMerger.java:189),com.android.dx.command.dexercom.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)错误:任务执行失败“:mobile”。

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

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process‘org.gradle.process.internal.ExecException 'C:\Program \Java\jdk1.7.0_79\bin\java.exe’‘以非零退出值2完成

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

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

代码语言:javascript
复制
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'
}

在我的主要活动中,我补充说:

代码语言:javascript
复制
public class UAMPApplication extends MultiDexApplication

而不是这样:

代码语言:javascript
复制
public class UAMPApplication extends Application

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-28 03:08:59

我将回答这个问题,并解释为什么我的梯度有错误。(来自内维尔·博纳维亚的HackHands帮助我理解了原因)。这不是MultiDex问题。在我的gradle文件中,我需要编译Android而不是Java。以下是我所做的改变:

build.gradle先于

代码语言:javascript
复制
...
    compile 'com.amazonaws:aws-java-sdk:1.10.1'
...

build.gradle在之后

代码语言:javascript
复制
...
    compile 'com.amazonaws:aws-android-sdk-core:2.2.4'
    compile 'com.amazonaws:aws-android-sdk-s3:2.2.4'
...

我的程序现在运行得很好!希望这能有所帮助。最后,要知道这是否真的是MultiDex问题,请使用这个程序告诉您:来自GitHub的https://github.com/mihaip/dex-method-counts

票数 1
EN

Stack Overflow用户

发布于 2015-06-21 06:37:52

当您添加Amazon时,您的应用程序似乎达到了Android允许的最大方法计数(超过65K)。关于如何为multidex:https://developer.android.com/tools/building/multidex.html配置应用程序,请参见此处

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30956569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档