Xamarin - Mono 和 Android 通信

3
我正在阅读Xamarin文档https://developer.xamarin.com/guides/android/under_the_hood/architecture/,其中提到:

"Xamarin.Android应用程序在Mono执行环境中运行。该执行环境与Android Runtime(ART)虚拟机并行运行。这两个运行时环境都在Linux内核之上运行,并向用户代码公开各种API,使开发人员可以访问底层系统"

据我所知,一个应用程序是一个单独的进程 - 这两个执行环境是什么意思?这是否意味着这两个环境在同一进程的不同线程中启动?还是像Android Runtime启动后再启动Mono runtime?
1个回答

4
您只需要继续阅读应用程序启动。运行时是在创建进程期间加载的:

Xamarin.Android通过在构建过程中向AndroidManifest.xml添加mono.MonoRuntimeProvider ContentProvider来钩入此功能。 mono.MonoRuntimeProvider.attachInfo()方法负责将Mono运行时加载到进程中。在此之前尝试使用Mono将会失败。(注意:这就是为什么子类化Android.App.Application的类型需要提供(IntPtr,JniHandleOwnership)构造函数的原因,因为Application实例是在初始化Mono之前创建的。)

所提到的AndroidManifest.xml的部分如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="foo.sample" android:installLocation="auto" 
          android:versionCode="1" android:versionName="1.0">
  <application ...>

    <provider android:name="mono.MonoRuntimeProvider" 
              android:exported="false" android:initOrder="2147483647" 
              android:authorities="foo.sample.mono.MonoRuntimeProvider.__mono_init__" />

  </application>
</manifest>

我只能点赞这个回答。但是它并没有解答我的实际问题——“据我所知,一个应用程序是一个单一的进程——那么说有两个执行环境是什么意思?” - Gopal

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