#android #xamarin #mono #xamarin.android
#Android #xamarin #моно #xamarin.android
Вопрос:
Я просматривал документацию по Xamarin https://developer.xamarin.com/guides/android/under_the_hood/architecture / и в нем говорится
«Xamarin.Приложения Android выполняются в среде выполнения Mono. Эта среда выполнения выполняется параллельно с виртуальной машиной Android Runtime (ART). Обе среды выполнения выполняются поверх ядра Linux и предоставляют различные API для пользовательского кода, что позволяет разработчикам получать доступ к базовой системе «
Насколько я понимаю, приложение представляет собой единый процесс — что значит сказать, что существует две среды выполнения? Похоже ли, что эти две среды запускаются в разных потоках в одном и том же процессе? Или это похоже на загрузку среды выполнения Android, а затем запуск Mono runtime?
Ответ №1:
Вам просто нужно было прочитать дальше, чтобы запустить приложение. Среда выполнения загружается во время создания процесса:
Xamarin.Android подключается к этому, добавляя mono.MonoRuntimeProvider ContentProvider к AndroidManifest.xml во время процесса сборки. Метод mono.MonoRuntimeProvider.attachInfo() отвечает за загрузку среды выполнения Mono в процесс. Любые попытки использовать Mono до этого момента завершатся неудачей. (Примечание: вот почему типы, которые относятся к подклассу Android.App.Application, должны предоставлять конструктор (IntPtr, JniHandleOwnership), поскольку экземпляр приложения создается до инициализации 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>
Комментарии:
1. Я могу только поддержать это. Это не объясняет мой актуальный вопрос: «Насколько я понимаю, приложение представляет собой единый процесс — что значит сказать, что существует две среды выполнения?»