NDK原生代码在哪里执行?

8
我对安卓应用中原生代码的生命周期有些困惑。我看到的参考资料说原生代码在Dalvik虚拟机内执行,但这是真的吗?我原本认为虚拟机只能运行Dalvik字节码。另一方面,原生代码使用JNI来自Java VM内调用。最后,使用NativeActivity会有什么不同吗?
我以为我已经相当了解NDK,直到我坐下来试图向自己解释它。我甚至不确定自己是否以明智的方式提出问题。
1个回答

8
我看到的参考资料说本地代码是在Dalvik VM内执行的,但真的吗?它是在包含Dalvik VM的进程内执行。就个人而言,我不会将其描述为在VM内部执行——正如你所说,Dalvik bytecode 在VM中执行。“在Dalvik VM的控制下”可能是更好的措辞,依我之见。当然,这归结于你对“在……中”的定义,我想。

最后,使用NativeActivity有什么区别吗?实际上没有,因为NativeActivity是用Java实现的。虽然您可能没有任何Java,但Java仍然轻微地涉及运行本地代码的行为。


感谢您澄清事情。从Native Activity的实现来看,它似乎只是一个包装器,用于调用本地代码的JNI调用。 - CatShoes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接