【问题标题】:App won't run after adding support design library添加支持设计库后应用无法运行
【发布时间】:2015-06-03 11:04:53
【问题描述】:

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

【问题讨论】:

  • 请发布完整的错误日志。
  • 嗯,这是我唯一的错误,这就是为什么我不知道为什么会发生这种情况。:(
  • 当某些库发生冲突时,总是会出现此错误。请检查您的 log-cat 日志并复制整个日志。找到真正的原因会更有帮助。
  • 嗯,错误出现在 Gradle 错误消息上,而不是 log-cat 上,因为它发生在构建应用程序时,而不是在运行时。另外,是的,我很清楚冲突的库可能会导致这种情况,尽管我也尝试创建一个新项目,导入我当前应用程序上的所有相同库,但 SnackBar 工作得很好,这使得这更加复杂。明天我会尝试发布整个 gradle 消息。

标签: android android-design-library


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多