![](/img/trans.png)
[英]Failed to read artifact descriptor for com.amazonaws:aws-java-sdk:jar:1.12.169 when adding the AWS SDK for Java using Maven
[英]Gradle Compilation Errors when adding 'com.amazonaws:aws-java-sdk:1.10.1'
我正在運行Android Studio,並且在執行以下操作之前,我的應用一直運行完美。 當我在gradle文件中添加“ compile'com.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.