Gradle - 意想不到的顶级异常 - 无处不在

Hia*_*iam 6 android android-studio build.gradle android-gradle-plugin

相当一定的gradle对我来说.几天前开始一个工作正常的项目.更新了android studio并再次打开了该项目.我已经尝试了所有我能想到的东西,从删除/更新库检查xml文件和结构.删除gradle缓存并安装最新的jdk,似乎没有任何帮助.

还尝试添加:

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}
Run Code Online (Sandbox Code Playgroud)

在stackoverflow上提到了其他帖子

我从控制台导出错误,它看起来像这样:

objc[2338]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536
    at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501)
    at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:276)
    at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:490)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:167)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)
:Derp:dexDerpDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':Derp:dexDerpDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /Applications/Android Studio.app/sdk/build-tools/19.1.0/dx --dex --num-threads=4 

--output /Users/MorePathStuffForALongWhile

  Error Code:
    2
  Output:
    objc[2338]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
Run Code Online (Sandbox Code Playgroud)

web*_*o80 1

你的问题:你已经通过了大约。编译应用程序时的方法限制为 65000 个。您必须找到一种方法来减少应用程序中的方法数量。

如果您使用的是 Google Play Services,您可以尝试此方法来更精细地编译它。

如果没有,您可以简单地使用 multiDex(确保您使用的是最新版本的 Android Studio)。在您的 build.gradle 文件中使用它:

android {
    defaultConfig {
        ...
        multiDexEnabled = true
    }
}
Run Code Online (Sandbox Code Playgroud)