我有一个大型 Android 项目,其中出现Unable to execute dex: method ID not in [0, 0xffff]: 65536错误;我相信你们中的一些人之前肯定已经经历过这个问题。这是由于应用程序中引用的方法过多而导致的错误。
我在网上寻找了不同的来源,发现这可能是最好的解决方案。
我做了以下事情:
multiDexEnabled = true
在build.gradledefaultConfig
块中添加。添加了以下依赖项:
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。
谢谢!
编辑:
我已经检查了如何在 MonoDevelop 中编译 MonoDroid App 时修复“OutOfMemoryError: java heap space”,但这并没有涵盖问题的原因,而且我没有使用 Xamarin Studio。
编辑2:
确切的症状是这样的:
当我编译代码时,gradle 控制台向我显示数百条警告说“忽略匿名内部类的 InnerClasses 属性”(其他一些 stackoverflow 答案表明这不是严重的警告),然后什么也不显示但是光标闪烁了一会儿,大约一分钟后,它给了我错误。