По сути, мой вопрос таков: если Xamarin IOS статически компилируется или компилируется заранее (AOT), зачем нам Mono Runtime внутри ipa?
Может быть я не понимаю, как работает xamarin ios в устройствах ios?
Пожалуйста, кто-нибудь может пролить свет?
зачем нам Mono Runtime в ipa?
Собственный код ARM, сгенерированный процессом AOT Xamarin.iOS (mtouch), зависит от времени выполнения Mono, поскольку процесс AOT не является компилятором транскодирования.
mtouch
Эта зависимость в основном предназначена для сборщика мусора, но она также обеспечивает интерфейс времени выполнения из низкоуровневых вызовов инфраструктуры .Net / Mono к операционной системе iOS | tvOS | watchOS.
При компиляции любого приложения на платформе Xamarin Mono C # (или F #) Компилятор запустится и скомпилирует ваш код на C # и F # в Microsoft Средний язык (MSIL). Если вы работаете с Xamarin.Android, Приложение Xamarin.Mac или даже приложение Xamarin.iOS на симулятор .NET Common Language Runtime (CLR) компилирует MSIL используя компилятор Just in Time (JIT). Во время выполнения это компилируется в нативный код, который может работать на правильной архитектуре для вашего применение. Однако на iOS есть ограничение безопасности, установленное Apple, которое запрещает выполнение динамически сгенерированного кода на устройстве. к убедитесь, что мы придерживаемся этих протоколов безопасности, вместо Xamarin.iOS использует компилятор Ahead of Time (AOT) для компиляции управляемого кода. это создает собственный бинарный файл iOS, опционально оптимизированный с помощью LLVM для устройства, которые могут быть развернуты на процессоре Apple на базе ARM.
При компиляции любого приложения на платформе Xamarin Mono C # (или F #) Компилятор запустится и скомпилирует ваш код на C # и F # в Microsoft Средний язык (MSIL). Если вы работаете с Xamarin.Android, Приложение Xamarin.Mac или даже приложение Xamarin.iOS на симулятор .NET Common Language Runtime (CLR) компилирует MSIL используя компилятор Just in Time (JIT). Во время выполнения это компилируется в нативный код, который может работать на правильной архитектуре для вашего применение.
Однако на iOS есть ограничение безопасности, установленное Apple, которое запрещает выполнение динамически сгенерированного кода на устройстве. к убедитесь, что мы придерживаемся этих протоколов безопасности, вместо Xamarin.iOS использует компилятор Ahead of Time (AOT) для компиляции управляемого кода. это создает собственный бинарный файл iOS, опционально оптимизированный с помощью LLVM для устройства, которые могут быть развернуты на процессоре Apple на базе ARM.
iOS App Architecture эта ссылка может быть полезна вам для более подробной информации.