首页新闻找找看学习计划

请教一个关于Xamarin.Android运行机制的问题...

0
悬赏园豆:20 [已关闭问题] 关闭于 2019-03-26 09:04

上图是微软官方的原理图,我有一个不明白的地方,

那就是Mono在Android类型的Linux系统中,充当的是ART虚拟机,做为.Net写的APK的运行环境呢,

还是Mono只充当.NetApi和AndroidBinding的翻译官,将.Net的中间代码它们翻译成ART需要的代码?

 

为什么会有这样的疑问呢,微软的文档里写,如果要将jar包装成C#可调用的代码,是通过MCW(Managed Called Wrapper)来完成的,它和ACW(Android Called Wrapper)都是JNI,

ART需要访问托管代码时,需要通过ACW.

 

我理解ART就是一个特殊的JVM,它能运行APK格式的程序,

Mono相当于Windows下的CLR,它能运行Net的DLL.

从这个层面来讲,它们俩在linux之上是处于同一层级的,

那么Mono应该是充当ART的角色,直接运行Net写的APK.

 

但是微软的图上又写了ART通过ACW访问托管代码...

 

所以就不明白了,特来求教,谢谢~~

 

hexllo的主页 hexllo | 菜鸟二级 | 园豆:405
提问于:2019-03-25 15:41
< >
分享
所有回答(1)
0

以下是微软在github上给我的回复.

https://github.com/MicrosoftDocs/xamarin-docs/issues/1525

那么Mono应该是充当ART的角色,直接运行Net写的APK.

No, the APK is still a valid Java APK. It starts in ART, and uses ART for UI (Android.* classes).

Mono is used to run .NET IL. The IL and Android native code run side-by-side and communicate via callable wrappers.

hexllo | 园豆:405 (菜鸟二级) | 2019-03-26 09:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册