1

我目前正在尝试在我的应用程序上实现 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

4

1 回答 1

1

一段时间后,我终于解决了。gradle 控制台并没有为我提供问题的真正原因,它只是返回我在问题中提供的那些行。我所做的是运行 gradledexDebug --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

于 2015-06-04T03:25:30.187 回答