我正在运行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文件:
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应用程序所需的所有内容,但它仍然没有编译。
发布于 2015-07-28 03:08:59
我将回答这个问题,并解释为什么我的梯度有错误。(来自内维尔·博纳维亚的HackHands帮助我理解了原因)。这不是MultiDex问题。在我的gradle文件中,我需要编译Android而不是Java。以下是我所做的改变:
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。
发布于 2015-06-21 06:37:52
当您添加Amazon时,您的应用程序似乎达到了Android允许的最大方法计数(超过65K)。关于如何为multidex:https://developer.android.com/tools/building/multidex.html配置应用程序,请参见此处
https://stackoverflow.com/questions/30956569
复制相似问题