我有一个很棒的Android项目,我得到无法执行dex:方法ID不在[0,0xffff]:65536 错误;我相信你们中的一些人之前肯定经历过这个问题。由于应用程序中引用的方法太多,这是一个错误。
我在线查找了不同来源,发现this可能是最佳解决方案。
我做了以下事情:
multiDexEnabled = true
块中添加了defaultConfig
。添加了以下依赖项:
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
覆盖了我的App类中的以下代码。
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
现在,错误消失了,但我遇到了一个新问题。当我运行应用程序时,编译器编译和运行应用程序需要3分钟以上,最后给我这个错误:
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space
我理解由于大量内存使用而发生此错误,但我不知道如何解决它。我使用的是Android Studio 1.0.2和Android API 21。
谢谢!
修改:
我已经检查了How to fix “OutOfMemoryError: java heap space” while compiling MonoDroid App in MonoDevelop,但这并没有涵盖问题的原因,而且,我没有使用Xamarin Studio。
EDIT2 :
确切的症状是这样的:
当我编译代码时,gradle控制台向我展示了数百个警告,说明了#34;忽略一个匿名内部类的内部类属性" (其他一些stackoverflow答案表明这不是严重的警告),然后只显示闪烁的光标一段时间,大约一分钟后,它给了我错误。
答案 0 :(得分:11)
您是否尝试将堆大小调整添加到build.gradle
文件中?例如,这会将dexing的最大堆大小设置为4GB。
android {
...
dexOptions {
javaMaxHeapSize "4g"
}
}
答案 1 :(得分:-1)
在构建gradle中尝试此操作
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
minSdkVersion 14 //lower than 14 doesn't support multidex
targetSdkVersion 21
// Enabling multidex support.
multiDexEnabled true
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}