Подтвердить что ты не робот

Что Xamarin действительно делает при использовании хоста сборки iOS?

Я заметил, что в Xamarin есть возможность подключить Visual Studio к хосту сборки iOS.

Что это за хост сборки, есть ли какая-либо документация об ее архитектуре? Какой код отправляет Xamarin.iOS этому хосту сборки?

[изменить]

Я хочу, как личный проект, создать хост сборки iOS в Windows. Я знаю, что это может быть достигнуто, и я уверен, что технически у меня есть все необходимые инструменты для его воссоздания. Мои проблемы касаются архитектуры исходного хоста iOS. Я хочу знать, что такое связь между Xamarin и хостом сборки iOS, и каков поток сборки. И это не документировано.

4b9b3361

Ответ 1

Отличное объяснение от здесь.

Xamarin.iOS компилирует исходный код С# на специальное подмножество моно рамки. Эта сокращенная версия моно-рамки включает дополнительные библиотеки, которые позволяют получить доступ к платформе iOS функции. Компилятор Xamarin.iOS, smsc, берет исходный код и компилирует его на промежуточный язык, ECMA CIL (общий промежуточный язык), однако он не производит ECMA ABI совместимые двоичные файлы, в отличие от обычного монокомпилятора, gmcs или dmsc. Это означает, что любые сторонние .Net-библиотеки, которые вы хотите включить в свою приложение необходимо будет перекомпилировать с помощью подмножества Xamarin.iOS мономодуля с помощью smsc.

Как только приложение Xamarin.iOS было скомпилировано в CIL, оно должно снова скомпилироваться в собственный машинный код, который может работать на iOS устройство. Этот процесс выполняется с помощью инструмента SDK "mtouch", результатом которого является пакет приложений, который может быть либо iOS-симулятор, либо реальное устройство iOS, такое как iPhone или IPAD.

Из-за ограничений, установленных Apple, ядро ​​iOS не позволит программы для генерации кода во время выполнения. Это ограничение имеет серьезные последствия для программных систем, работающих внутри виртуальной машины используя компиляцию "точно в срок". Компиляция "точно в срок" принимает промежуточный код, например, моно CIL и компилирует его во время выполнения в машинный код. Этот машинный код совместим с устройством выполняется во время выполнения.

Чтобы обойти это ограничение, инструмент mtouch компилирует CIL вперед времени. Процесс, который моно-команда описывает как AOT, раньше времени сборник.

enter image description here

Некоторые цитаты из документов Xamarin:

Xamarin iOS для Visual Studio выполняет удивительный подвиг: он позволяет вы создаете, создаете и отлаживаете приложения iOS на компьютере под управлением Windows используя среду Visual Studio. Однако он не может сделать это один - iOS приложения не могут быть созданы без компилятора Apples, и они не могут быть развернуты без сертификатов Apple и подписи кода инструменты. Это означает, что ваш Xamarin iOS для установки Visual Studio требуется подключение к сетевому компьютеру Mac OS-X для выполнения эти задачи для вас. После настройки инструменты Xamarins процесс как можно более бесшовный.

Начиная с Xamarin.iOS 4.0, есть два генератора кода к Xamarin.iOS. Регулярный движок генерации кода Mono и один на компиляторе LLVM Optimizing. Каждый двигатель имеет свои плюсы и минусы.

Как правило, во время процесса разработки вы, вероятно, будете использовать Монодровый генератор кода, так как он позволит вам быстро выполнять итерацию. Для релиз и развертывание AppStore, вы захотите переключиться на Двигатель генерации кода LLVM.

Заключение

Таким образом, вы не можете сделать хост сборки iOS в Windows, как вы сказали.

Я предполагаю, что Xamarin отправит сборщику сборки файл сборки .Net(оранжевую часть рисунка), который будет скомпилирован в собственный ARM-код, используя Apple llvm, и другие инструменты, такие как xcode-build, чтобы подписаться, связать и создать ваше приложение,