【问题标题】:a compiler that compiles down to dalvik bytecode?编译成dalvik字节码的编译器?
【发布时间】:2017-08-01 12:17:29
【问题描述】:

所以我一直在尝试了解 android 的工作原理 以及到目前为止我收集到的内容:

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

-应用程序在称为“dalvik 虚拟机”的虚拟机中运行

-java文件被编译成dalvik字节码的方式,可以在虚拟机上运行,​​首先用java编译器编译得到java字节码,然后使用android提供的编译器“翻译” java字节码转dalvik字节码。

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

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

【问题讨论】:

  • 自 Google I/O 2017 以来,您可以使用 Kotlin 编写 Android 应用程序。

标签: android cross-compiling dalvik


【解决方案1】:

看来编写安卓应用的唯一方法就是使用java

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

应用程序在称为“dalvik 虚拟机”的虚拟机中运行

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

那么是否有可能创建一个可以编译为 dalvik 字节码的 C/C++(或任何其他编译语言)编译器?

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多