是否存在用于Java的通用或“胖”类文件?

胖二进制文件是可以在多个架构上运行的二进制文件。 基本上,它是由一个程序编译两次,每个架构一次,然后写入同一个文件。 可能是最着名的例子是苹果公司的“通用”二进制文件,允许为英特尔和Power PC体系结构编译程序,并从相同的可执行文件运行。

这对Java来说从来就不是问题,因为Java在JVM上运行,允许它从任何JVM支持的计算机上运行。 然而,Android现在非常stream行,Android的VM(Dalvik)与JVM不兼容。 有两种编译代码的方法,并创build一个可以由JVM和Dalvik执行的类文件吗? 如果不是,这甚至有可能吗?

Solutions Collecting From Web of "是否存在用于Java的通用或“胖”类文件?"

答: 是的。

您可以创build一个包含JVM友好的.class文件和Android友好的classes.dex文件的通用.jar文件。 如果您使用--keep-classes命令行选项,则包含在Android SDK中的dx工具将发出此类文件。

请注意,尽pipe可以在JVM和Android上使用这样的.jar文件,但以这种方式打包代码并不是很有用。 Android应用程序打包为.apk文件包含Android清单XML文件。 他们使用JVM上没有的特定于Android的API(如Activity

如果要执行库的运行时类加载,通用的.jar文件将主要是有用的。