gpt4 book ai didi

c# - MonoRuntime 如何与 ART 共存?

转载 作者:行者123 更新时间:2023-11-30 00:19:07 26 4
gpt4 key购买 nike

我已经 read使用 Mono 开发的应用程序使用与 ART 类似的 MonoRuntime 进行部署,解释 C# 代码,执行它们等。我假设 Unity 和 Xamarin 都这样做。

对我来说奇怪的是,理论上我可以编写运行时并将其与我的应用程序一起发布?但这应该在 runtime 旁边, 在应用程序框架之下?沙盒如何让这种情况发生?

我假设 this可能是解决我困惑的方法,但我很难理解它。

我在这里错过了什么?

提前致谢

最佳答案

首先考虑 NDK/JNI 应用程序如何在 Android 上运行。它们从通过 ART/Dalvik 运行的标准 Android Java 代码启动,并使用 JNI 调用 C/C++ 代码。该过程仍在标准的 Android“沙盒”中,但对 Android NDK header 提供的库具有额外的较低级别访问权限。由于该代码是用 C/C++ 编写的,因此它可以实现高性能/跨系统兼容。

所以回答:

But that is supposed to be next to the runtime, below the application framework?

我会说不,至少你并没有真正低于 Android 应用程序框架。 MonoRuntime 从 Android 开始,可以使用任何“标准库”,这些库通过 JNI 包装器公开到 Android Java 端或通过 NDK header 公开。

如果您查看下图,您会看到“标准库”,它可以是具有 Android Java API 的 OpenGL ES 和在 NDK 中比 Android Java 媒体 API 公开更多细节的 OpenSL ES。

NDK app

I could write a runtime and ship it with my app?

是的,您可以,尽管您可能想清楚地定义“运行时”的含义。如果你是预编译的,你可以去掉不必要的类/模块,我相信 Mono 会这样做。

How can the sandboxing let this happen?

您仍在沙盒中。没有什么能阻止您用 C/C++ 编写自己的解释器/虚拟机,通过标准 JNI/NDK 调用连接 Android 框架,并将其添加到您自己的 APK 中。无论您仍然受限于 Android 框架/运行时允许的应用程序以及相同的进程限制和限制。

关于c# - MonoRuntime 如何与 ART 共存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46634414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com