Компиляция iOS приложений для Windows Store
В апреле этого года на конференции //Build был сделан очень интересный анонс, который показал возможность компиляции и сборки ObjectiveC кода для Windows Store. Теперь эта технология и инструменты стали публичными, вы можете уже сейчас загрузить компоненты сборки ObjC/iOS приложений для Visual Studio 2015 и собрать приложение для Windows Store.
С чего начать
По адресу https://github.com/Microsoft/WinObjC/releases опубликован SDK который содержит компоненты для сборки приложения iOS для Windows Store. Для того чтобы попробовать их в деле вам понадобится Windows 10 и Visual Studio Community 2015. Распакуйте содержимое winobjc.zip и откройте файл samples\HelloUI\HelloUI-WinStore10.sln. Далее делаем активным проект Hello-UI-Winstore (в Solution Explorer вызвать контекстное меню, «Set as StartUP Project») и нажимаем F5.
Добро пожаловать в мир кросс-компиляции ObjectiveC для Windows.
Пакет, который подготовила команда Microsoft содержит компилятор ObjectiveC, компоненты интеграции с Visual Studio 2015, основные части SDK iOS и дополнительные инструменты конвертации приложений.
C основными возможностями SDK вы можете ознакомиться из примера samples\WOCCatalog\WOCCatalog-WinStore10.sln.
В этом примере показаны основные варианты использования интерфейсных компонент:
Взаимодействие с OpenGL:
SDK также может собирать приложения для Windows 8.1 и Windows Phone 8.1.
Несколько необычно видеть стандартные интерфейсные элементы iOS на Windows Phone.
Конвертация проектов iOS
Для того чтобы превратить проект iOS в проект Visual Studio можно воспользоваться специальной утилитой \ bin \vsimporter.exe.
Например, сделаем git clone https://github.com/ericjohnson/canabalt-ios.git и запустим в каталоге исходного кода этого проекта vsimporter. В результате у вас появится файл Canabalt-WinStore10.sln, открываем его в Visual Studio 2015 и собираем проект:
Почему-то он работает повернутый на 90 градусов.
Или например:
Результат компиляции для Windows 10:
Что пока в активной разработке?
Проект WinobjC находится в активной разработке и некоторые возможности не работают:
- Нет поддержки ARM, только x86.
- Оптимизации компилятора не работают. Скорее всего они приведут к крашу clang, пока можно использовать только debug сборки.
- Autolayout
- Storyboard support
- MapKit
- AssetsLibrary
- AddressBook
- Ads
- Objective-C annotations
- Media Capture