实现MultiDex导致编译了这么久,最后heap space错误
Implementing MultiDex results in compiling for so long, and finally heap space error
我有一个大的 Android 项目,在该项目中出现 Unable to execute dex: method ID not in [0, 0xffff]: 65536 错误;我相信你们中的一些人以前肯定经历过这个问题。由于应用中引用了太多方法,因此出现错误。
我在网上寻找了不同的资源,发现 this 可能是最好的解决方案。
我做了以下事情:
- 在 build.gradle.
的 defaultConfig
块中添加了 multiDexEnabled = true
添加了以下依赖项:
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
在我的应用程序中覆盖了以下代码 class。
@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 控制台向我显示了数百条警告说 "Ignoring InnerClasses attribute for an anonymous inner class"(其他一些 Whosebug 答案表明这不是严重警告),然后只显示了一个闪烁的光标,大约一分钟后,它给了我错误。
您是否尝试过将堆大小调整添加到您的 build.gradle
文件中?例如,这会将 dexing 的最大堆大小设置为 4GB。
android {
...
dexOptions {
javaMaxHeapSize "4g"
}
}
在构建中试试这个 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'
}
我有一个大的 Android 项目,在该项目中出现 Unable to execute dex: method ID not in [0, 0xffff]: 65536 错误;我相信你们中的一些人以前肯定经历过这个问题。由于应用中引用了太多方法,因此出现错误。
我在网上寻找了不同的资源,发现 this 可能是最好的解决方案。
我做了以下事情:
- 在 build.gradle. 的
添加了以下依赖项:
dependencies { compile 'com.android.support:multidex:1.0.0' }
在我的应用程序中覆盖了以下代码 class。
@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
defaultConfig
块中添加了 multiDexEnabled = true
现在,错误消失了,但我遇到了新问题。当我 运行 应用程序时,编译器编译和 运行 应用程序花费了 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 控制台向我显示了数百条警告说 "Ignoring InnerClasses attribute for an anonymous inner class"(其他一些 Whosebug 答案表明这不是严重警告),然后只显示了一个闪烁的光标,大约一分钟后,它给了我错误。
您是否尝试过将堆大小调整添加到您的 build.gradle
文件中?例如,这会将 dexing 的最大堆大小设置为 4GB。
android {
...
dexOptions {
javaMaxHeapSize "4g"
}
}
在构建中试试这个 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'
}