无法执行dex:方法ID不在[0,0xffff]中:65536
我以前见过各种版本的dex=erros,但这是新的。清理/重新启动等无济于事。图书馆项目似乎完好无缺,并且依存关系似乎已正确链接。
Unable to execute dex: method ID not in [0, 0xffff]: 65536Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
要么
Cannot merge new index 65950 into a non-jumbo instruction
要么
java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
tl; dr:来自Google的官方解决方案终于来了!
http://developer.android.com/tools/building/multidex.html
只有一个小技巧,您可能需要执行此操作,以防止在进行排序时内存不足。
dexOptions { javaMaxHeapSize "4g"
}
还有一种巨型模式可以用不太可靠的方式解决此问题:
dexOptions { jumboMode true
}
回答:
更新3(11/3/2014)Google终于发布了官方说明。
适用于Android的Update 2(10/31/2014) Gradle插件v0.14.0添加了对multi-dex的支持。要启用,只需在build.gradle中声明它即可:
android { defaultConfig {
...
multiDexEnabled true
}
}
如果您的应用程序支持5.0之前的Android(也就是说,如果您的minSdkVersion年龄为20或更低),则还必须动态修补应用程序ClassLoader,以便它能够从辅助dexes加载类。幸运的是,有一个库可以为您完成此任务。将其添加到应用程序的依赖项中:
dependencies { ...
compile 'com.android.support:multidex:1.0.0'
}
您需要尽快调用ClassLoader补丁代码。MultiDexApplication
该课程的文档提出了三种实现方法(选择其中一种,最方便的一种):
1- MultiDexApplication
在AndroidManifest.xml
中将类声明为应用程序:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
2-让您的Application
类扩展MultiDexApplication
类:
public class MyApplication extends MultiDexApplication { .. }
3- MultiDex#install
通过您的Application#attachBaseContext
方法进行调用:
public class MyApplication { protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
....
}
....
}
更新1(10/17/2014):
如预期的那样,Android支持库的修订版21中提供了对multidex的支持。您可以在/ sdk / extras / android / support / multidex / library / libs文件夹中找到android-support-multidex.jar。
Multi-dex支持解决了这个问题。dx 1.8已经允许生成多个dex文件。
Android L将原生支持多dex,并且支持库的下一个版本将涵盖API 4之前的较早版本。
Anwar Ghuloum 在此 Android Developers Backstage播客集中对此进行了说明。我已经发布了相关部分的成绩单(和一般的多dex解释)。
以上是 无法执行dex:方法ID不在[0,0xffff]中:65536 的全部内容, 来源链接: utcz.com/qa/405672.html