如果您事先知道目标平台,为什么 Android 使用虚拟机?

Why does Android use a Virtual Machine if you know the target platform in advance?

我开始使用 Android Studio 进行开发,来自 Java 世界。如果您事先知道您的 APK 将在 Android 上 运行,为什么它需要像 Dalvik 或 ART 这样的虚拟机?在 Java 中,虚拟机的主要目的是使应用程序能够 运行 在多个平台上运行,但显然 APK 并非如此,因为根据定义,它总是部署在 Android.

请记住,与大多数桌面环境相比,Android 是一个受限少得多的环境。例如,如果您正在编写 "standard" Windows 桌面应用程序,您知道您的内容将被部署到使用英特尔处理器(或具有相同汇编语言的处理器)的系统。你不知道 Android;大多数情况下,它在 ARM(RISC 架构)处理器上是 运行,但在 MIPS(也是 RISC,但汇编语言略有不同)或 Atom 上也可能是 运行 (CISC 架构, 非常 不同的架构和汇编语言)处理器。要点是,在 Android 中,您可以部署到具有不同(可能非常不同)体系结构和汇编语言的多个处理器。

即使是本机开发,您也必须对多个可能的处理器进行交叉编译(有关详细信息,请参阅 this question)。