现在请等一下,然后再将其标记为重复,因为这是非常具体的问题。
我不会问您是否可以使用另一种使用NDK绑定的语言编写应用程序;我想知道的是:
根据我的理解,(1)的答案是,因为android基本上是Linux系统,所以这是通过系统调用完成的。也就是说,在某种程度上,davlik / art VM 必须通过C API与C Linux内核交互。
所以,当然这将是一次痛苦的经历,但技术上是否有任何理由为什么在不使用android运行时根本不可能用C语言编写应用程序?
(注意:没有没有运行时;显然必须存在运行时才能执行各种操作,例如设备初始化;但是一个独立的二进制文件,它不与运行时交互)。
(我可以想到为什么会出现这种情况的几个原因,特别是需要对各种硬件进行独占硬件访问的运行时,但我无法找到有关它的任何特定文档)
答案 0 :(得分:1)
有可能,这就是守护进程在Android上的工作方式(例如RILD)。但是,您无法访问Android设施(图形,位置等),因为没有来自C的API。
请注意,为了与Android API对话,您的流程需要是zygote的子级。如果您从ADB shell生成进程,或者从init生成进程,那么您将不会成为zygote的fork()
,并且无法直接访问JVM。