编译为 dalvik 字节码的编译器?

a compiler that compiles down to dalvik bytecode?

所以我一直在努力理解 android 是如何工作的 从我目前收集到的信息来看:

-似乎编写 android 应用程序的唯一方法是使用 java

-名为 "dalvik virtual machine"

的虚拟机中的应用程序 运行

-java 文件被编译成 dalvik 字节码的方式,它可以在虚拟机上 运行,首先用 java 编译器编译它以获得 java 字节码,然后使用 android 提供的编译器将 "translate" 字节码 java 转换为 dalvik 字节码。

我的问题是,如果仅此而已
那么是否可以创建一个可以编译为 dalvik 字节码的 C/C++(或与此相关的任何其他编译语言)编译器?

我的意思是,我们已经有了支持各种 cpu 架构的 c++ 跨平台编译器,为什么不让它们也支持 dalvik "architecture"?

It seems that the only way to write an android app is by using java

You are welcome to use C/C++ as well.

Apps run in a virtual machine called the "dalvik virtual machine"

仅适用于 Android 4.4 及更早版本。较新的设备使用称为 ART 的新运行时环境。

then wouldn't it be possible to create a C/C++ (or any other compiled language for that matter) compiler that can compile down to dalvik bytecode?

你能制作其他编译为 Dalvik 字节码的语言吗?当然。你能把一些现有的语言编译成 Dalvik 字节码吗?仅当该语言的语言特性可以在 Dalvik 字节码中(合理地)实现。

Dalvik 字节码比 x86 或 arm 指令结构化得多。它在很大程度上以 java 为中心,具有高级概念,例如 类 和遵循 java 语义的方法。

作为一个粗略的近似值,想象一下您可能会如何尝试将 c++ 反编译为 java 程序。在尝试将 C++ 编译为 Dalvik 字节码时,您会遇到所有相同的困难。