所以我一直试图了解android的工作原理 从我到目前为止收集的内容:
- 似乎编写Android应用程序的唯一方法是使用java
-Apps在名为" dalvik虚拟机的虚拟机中运行"
- java文件被编译为dalvik字节码的方式,可以在虚拟机上运行,首先用java编译器编译它以获取java字节码,然后使用android提供的编译器来编译。翻译" java字节码到dalvik字节码。
我的问题是,如果那就是它的全部内容 然后就不可能创建一个可以编译成dalvik字节码的C / C ++(或任何其他编译语言)编译器吗?
我的意思是,我们已经拥有支持各种cpu架构的c ++跨平台编译器,为什么他们不支持dalvik"架构"还有吗?
答案 0 :(得分:1)
似乎编写Android应用程序的唯一方法是使用java
You are welcome to use C/C++ as well
应用程序在名为" dalvik虚拟机"
的虚拟机中运行
仅适用于Android 4.4及更早版本。较新的设备使用名为ART的新运行时环境。
那么是不是可以创建一个可以编译成dalvik字节码的C / C ++(或任何其他编译语言)编译器?
你能编译其他编译成Dalvik字节码的语言吗?当然。你能将一些现有语言编译成Dalvik字节码吗?只有在Dalvik字节码中可以(合理地)实现该语言的语言特征。
答案 1 :(得分:1)
Dalvik字节码比x86或arm指令更有条理。它是以Java为中心的,具有高级概念,如类和方法,遵循java的语义。
作为粗略的近似,想象一下如何尝试将c ++转换为java程序。在尝试将c ++编译为dalvik字节码时,您将遇到所有相同的困难。