添加支持设计库后应用不会运行

App won't run after adding support design library

我目前正在尝试在我的应用程序上实施 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 行时它才会触发:

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

经过一段时间我终于解决了。 gradle 控制台没有向我提供问题的真正原因,而只是 returns 我在问题上提供的那些行。我所做的是 运行 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.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