我目前正在尝试在我的应用上实现Android设计库但是在更新我的SDK之后遇到很多问题之后我现在在实际使用它时遇到了麻烦。它在运行应用程序时给出了这个错误(gradle已经同步,清理和项目重建):
* What went wrong:
Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_45\bin\java.exe'' finished with non-zero exit value 2
我不知道为什么以及如何发生这种情况,但只有当我在代码上添加小吃店线时才会触发:
Snackbar
.make(getWindow().getDecorView().getRootView(), R.string.message, Snackbar.LENGTH_LONG)
.setAction(R.string.close, new View.OnClickListener() {
@Override
public void onClick(View v) {
}
})
.show();
有人能指出这个问题发生在哪里以及如何发生?我还检查了所有的库,并且没有重复。 TIA
答案 0 :(得分:1)
过了一段时间我终于解决了。 gradle控制台并没有为我提供问题的真正原因,而是只返回我在问题上提供的那些行。我做的是运行gradle dexDebug --stacktrace --info --debug
然后出现真正的问题:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.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)
现在可以通过以下方式解决:
defaultConfig {
...
multiDexEnabled = true
}
但这不应该是问题,当我查看外部库时,我发现play-services 7.5.0版本只是让我遇到这个问题:
所以我将版本降级为6.5.87。再次删除build.gradle上的multiDexEnabled,同步并清理,现在它可以工作了! :d