编译Jars并将其添加到android项目中



好吧,事情是这样的,我花了几天时间,搜索了所有的数据库,所以要么我没有搜索到正确的单词,要么没有答案,希望是"还没有"。

症状:-编译Android项目DX在每次构建项目时编译所有的jar-没有理由做一次就足够了,无论它每次如何做,每次构建都可能需要很长时间,而不是几秒钟,它需要几分钟。

真正的问题:

-添加几个罐子导致eclipse崩溃——现在有了这些设置(重罐子)-Xms256m-Xmx1024m-XX: +使用ParallelGC-XX: PermSize=256M-XX: 最大PermSize=512M

(这实际上提供了更好的性能,所以如果eclipse编译速度较慢,可以添加-XX:+UseParallelGC,这将有所帮助)(我不能把它设置得比这个更高,eclipse崩溃时java堆大小达到750m,DX编译jar时gc不工作,它在两者之间尝试,但CPU很忙,不让它这样做,所以当它到达第四个第五个罐子时,每个罐子都是3MB,堆上大约有600MB,这就是我使用gcoverheadmit的原因)

将它们中的每一个或几个编译在一起会很好地编译它(在同一个android项目中),问题是我找不到单独编译它们的方法(然后我需要在客户端设备上安装apk),当我将它们编译在一起时,Eclipse崩溃。

我试着用cmd和DX一个接一个地编译它们,尽管它已经构建好了,但当我在eclispe中构建项目时,它会重新构建它,所以我好像什么都没做,也试着把jar转换成DEX文件,但无济于事。

我发了很多关于java堆大小的帖子,但事实并非如此,我甚至使用了gcoverheadmit,太多的jar会导致它崩溃,如果有人有想法/解决方案,我会向他/她致敬。。。

总结一下:我想将java常规jar转换为Dalvik格式,然后将其作为资源添加到android项目中,这样当项目完成时,就不需要将jar转换为达尔维克格式,因为它已经完成了。

好的,经过长时间的研究,我想我知道问题是什么,但我还不知道如何解决它。

症状:编译大的jar和/或几个jar,导致eclipse崩溃,当它没有崩溃时错误消息:写入输出时出错:opcode==null,转换为Dalvik格式失败,错误2。

原因:DX无法处理超过其在16位字符串中所能包含的内容,因此,无法包含(至少在平均时间内)超过该字符串长度的内容。

结果:无法将复杂的Android应用程序作为一个APK进行编程。

给android开发人员的建议(我不太确定你是如何构建的,但):你可以为这些字符串使用arraylist,它们中的每一个依次将自己写入classes.dex文件,然后,为一个APK编写代码和/或添加开发人员需要的任意数量的jar将没有限制,这是一种假设,使其不容易,但也不会太复杂,绝对不是那些制造安卓的人,同意吗?

解决方法:很抱歉,但我还没有解决方法,我花了一些时间才解决这个问题,因为eclipse崩溃了,我没有得到"opcode==null"错误消息,所以我认为这是eclipse问题,我很高兴能得到第二和第三意见。

构建JAR后,将其添加为外部JAR。。。

在Eclipse中,选择"项目"菜单->"属性",然后选择"Java构建路径"。选择"库"选项卡,然后单击"添加外部JAR…"按钮,然后浏览并添加它们。

我也遇到过同样的问题。在详细输出中有很多"Dx processing…"消息,构建classes.dex(3.4Mb)大约需要3-4分钟。那是非常缓慢的,我感到屁股受伤了。然后我做了一项研究,发现问题的原因是错误的eclipseJVM设置(eclipse.ini)。顺便说一句,我从一些堆栈流中得到了这个讨厌的配置,有100多个接受。

请确保eclipse.ini不包含以下行:

CompileThreshold=5

我删除了这一行,现在编译大约需要10秒!!!此外,现在我在eclipse配置中使用ParallelGC而不是G1GC,因为它更稳定,而且不会破坏我的IDE。

因此,您的主要任务是修改eclipse.ini,并清除所有可疑的和实验性的参数。

最新更新