8

胖二进制文件是可以在多个架构上运行的二进制文件。基本上,它由一个程序编译两次,每个架构编译一次,然后写入同一个文件。最著名的例子可能是 Apple 的“通用”二进制文件,它允许为 Intel 和 Power PC 架构编译程序,并从同一个可执行文件运行。

这对 Java 来说从来都不是问题,因为 Java 在 JVM 上运行,允许它在任何支持 JVM 的计算机上运行。但是,Android现在很流行,而且Android的VM(Dalvik),不兼容JVM。是否有某种方法可以将代码编译两次,并创建一个可以由 JVM 和 Dalvik 执行的类文件?如果没有,这甚至可能吗?

4

1 回答 1

5

回答: 是的。

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

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

.jar如果您想对库进行运行时类加载,通用文件将非常有用。

于 2012-08-03T01:16:47.107 回答