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

好的就是这件事,我把它放进去,搜索所有数据库,所以要么我没有搜索正确的单词,要么就没有答案,希望“尚未”。

症状: – 编译Android项目DX每次构建项目时都会编译所有jar文件 – 没有理由这样做一次应该足够了,不管它每次都这样做,每次构建都需要很长时间而不是秒这需要几分钟。

真正的问题:

– 添加几个Jars导致eclipse崩溃 – 现在这是使用这些设置(重型jar子)-Xms256m -Xmx1024m -XX:+ UseParallelGC -XX:PermSize = 256M -XX:MaxPermSize = 512M

(这实际上提供了更好的性能所以如果你的eclipse编译速度慢,你可以添加-XX:+ UseParallelGC它会有帮助)(我无法设置它比这更高,java堆大小达到750m时eclipse崩溃,gc没有当DX编译一个jar时,它会在两者之间进行尝试,但CPU处于忙碌状态但不会让它,所以当它到达第五个每个3MB的jar子时,堆上有600MB的东西,这是为什么我用gcoverheadlimit)

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

我尝试使用cmd和DX逐个编译它们,虽然它是构建的,当我在eclispe中构建项目时它重建它,所以它就像我什么都没做,试图将jar子转移到DEX文件,也没有帮助。

关于java堆大小的红色很多post,这不是我的情况我甚至使用gcoverheadlimit,太多的jar子导致它崩溃,如果有人有想法/解决方案我会向他/她致敬…

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

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

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

原因:DX无法处理超过16bit字符串中包含的内容,因此,无法包含(至少不是平均时间)超过此字符串的长度。

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

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

解决方法:对不起,但我还没有解决方法,我花了一些时间来解决这个问题,因为eclipse崩溃了,我没有得到“opcode == null”,错误消息所以我认为这是一个日食问题,我很高兴得到关于这一点的第二和第三意见。

构建JAR后,将它们添加为外部JAR …

在Eclipse中选择’Project’菜单 – >’Properties’,然后选择’Java Build Path’。 选择“库”选项卡,然后单击“添加外部JAR …”按钮,然后浏览并添加它们。

我曾经也有过一样的问题。 详细输出中有很多“Dx处理…”消息,构建classes.dex(3.4 Mb)需要大约3-4分钟。 那是非常缓慢的 ,我感觉到了一个屁股。 然后我做了一个研究,发现问题的原因是错误的eclipse JVM设置(eclipse.ini)。 顺便说一句,我从一些stackoverflow回答得到了这个令人讨厌的配置超过100个接受。

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


     CompileThreshold = 5

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

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