我正在开发一个需要多个库(用于 Facebook、Google Maps v2 和 Quickblox 等)的 Android 应用程序,导致方法量溢出超过 64K 限制:
Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
因为我不能没有这些库,所以我寻找方法限制错误的解决方案。我从 Android 开发者那里找到了一篇很受欢迎的博客文章,其中推荐了源代码划分。(我正在谈论的博客条目可以在这里找到:http ://android-developers.blogspot.com.es/2011/07/custom-class-loading-in-dalvik.html )。我一直在尝试这个解决方案,但没有成功。
我现在遇到的问题是,最多的代码不是在我的应用程序本身,而是在所需的库中,所以我必须将这些库分布在我必须在我的应用程序中加载的不同 dex 文件中。我对 Ant 的了解非常有限,我想知道的是我应该在我的 build.xml 文件中写什么,以使 dex 将每个库复制到我想要的位置:
<!-- Primary dex to include my source code and some libraries. -->
<copy todir="${out.classes.absolute.dir}.1" >
<fileset dir="${out.classes.absolute.dir}" >
...
</fileset>
</copy>
<!-- Secondary dex to include some other libraries. -->
<copy todir="${out.classes.absolute.dir}.2" >
<fileset dir="${out.classes.absolute.dir}" >
...
</fileset>
</copy>
任何帮助将不胜感激。在此先感谢,亲切的问候!