簡體   English   中英

添加'com.amazonaws:aws-java-sdk:1.10.1'時發生Gradle編譯錯誤

[英]Gradle Compilation Errors when adding 'com.amazonaws:aws-java-sdk:1.10.1'

我正在運行Android Studio,並且在執行以下操作之前,我的應用一直運行完美。 當我在gradle文件中添加“ compile'c​​om.amazonaws:aws-java-sdk:1.10.1'”時,在進行項目重建時會收到以下警告。

警告:依賴項commons-logging:commons-logging:1.1.3在調試時將被忽略,因為它可能與Android提供的內部版本沖突。 如有問題,請用jarjar重新包裝以更改類包

警告:依賴項org.apache.httpcomponents:httpclient:4.3.6在調試時會被忽略,因為它可能與Android提供的內部版本沖突。 如有問題,請用jarjar重新包裝以更改類包

警告:依賴項commons-logging:commons-logging:1.1.3會被釋放,因為它可能與Android提供的內部版本相沖突。 如有問題,請用jarjar重新包裝以更改類包

警告:依賴項org.apache.httpcomponents:httpclient:4.3.6會被發布,因為它可能與Android提供的內部版本沖突。 如有問題,請用jarjar重新包裝以更改類

當我運行該應用程序時,我收到上述4條警告,並在運行移動應用程序時收到1條錯誤:

超出預期的最高級別:
com.android.dex.DexIndexOverflowException:方法ID不在[0,0xffff]中:com.android.dx.merge.DexMerger $ 6.updateIndex(DexMerger.java:502)處的com.android.dx.merge.DexMerger $ 65536 com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)處的com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)處的IdMerger.mergeSorted(DexMerger.java:277) com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)處com.android.dx.command.dexer.Main的.android.dx.merge.DexMerger.merge(DexMerger.java:189) .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:處理'命令'C:\\ Program Files \\ Java \\ jdk1.7.0_79 \\ bin \\ java.exe'的完成非零退出值2

更新:尼爾斯回答了這個問題的原因。 但是,它仍然沒有編譯並給出相同的錯誤。

這是我當前具有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'
}

在我的主要活動中,我添加了以下內容:

public class UAMPApplication extends MultiDexApplication

代替這個:

public class UAMPApplication extends Application

我已經添加了擁有MultiDex應用程序所需的所有內容,但仍無法編譯。

看來,當您添加Amazon SDK時,您的應用達到了Android中允許的最大方法數量(超過65K)。 請參閱此處以了解如何為multidex配置您的應用程序: https : //developer.android.com/tools/building/multidex.html

我將回答這個問題並解釋為什么我的gradle出現錯誤。 (HackHands的Neville Bonavia幫助我理解了原因)。 這不是MultiDex的問題。 在我的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'
...

我的程序現在運行良好! 希望這可以幫助。 最后,要知道它是否確實是MultiDex問題,請使用此程序告訴您:GitHub上的https://github.com/mihaip/dex-method-counts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM