相当一定的格斗对我来说。几天前开始一个工作正常的项目。更新了android studio并再次打开了该项目。我已经尝试了所有我能想到的东西,从删除/更新库检查xml文件和结构。删除gradle缓存并安装最新的jdk,似乎没有任何帮助。
还尝试添加:
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
引用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.
答案 0 :(得分:1)
你的问题:你已经通过约。编译应用程序时65000方法限制。您必须找到一种方法来减少应用中的方法数量。
如果您使用的是Google Play服务,可以尝试使用this method进行更精细的编译。
如果没有,您可以简单地使用multiDex(确保您使用的是最新版本的Android Studio)。在build.gradle文件中使用它:
android {
defaultConfig {
...
multiDexEnabled = true
}
}
答案 1 :(得分:0)
如果您使用gson或jackson,请尝试删除其依赖项。它对我有用。
compile 'com.google.code.gson:gson:2.1
答案 2 :(得分:0)
您的源代码+所有包含的库最终会有超过65k的方法定义。目前是limitation of dex。
为了避免这种情况,引入了multidex support。编译时输出类被拆分并捆绑在多个dex文件中。在运行时,它们是从多个dex文件加载的。
要实现这一目标,您需要添加multidex支持:
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
并设置一个扩展MultiDexApplication
的Application类。