company_banner

Компиляция iOS приложений для Windows Store



    В апреле этого года на конференции //Build был сделан очень интересный анонс, который показал возможность компиляции и сборки ObjectiveC кода для Windows Store. С радостью хочу сообщить что теперь эта технология и инструменты стали публичными, вы можете уже сейчас загрузить компоненты сборки ObjC/iOS приложений для Visual Studio 2015 и собрать приложение для Windows Store.

    C чего начать


    По адресу 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 градусов.

    Или например:

    git clone https://github.com/haqu/tweejump.git
    cd tweejump
    winobjc_sdk_path\bin\vsimporter.exe
    

    Результат компиляции для Windows 10:



    Что пока в активной разработке?


    Проект WinobjC находится в активной разработке и некоторые возможности не работают:
    1. Нет поддержки ARM, только x86.
    2. Оптимизации компилятора не работают. Скорее всего они приведут к крашу clang, пока можно использовать только debug сборки.
    3. Autolayout
    4. Storyboard support
    5. MapKit
    6. AssetsLibrary
    7. AddressBook
    8. Ads
    9. Objective-C annotations
    10. Media Capture

    Если у вас есть вопросы и вы хотели бы узнать больше об этом проекте, обращайтесь на форумы http://stackoverflow.com/, маркируйте свои вопросы тегом WinObjC и почитайте вики https://github.com/Microsoft/WinObjC/wiki.
    Метки:
    Microsoft 405,87
    Microsoft — мировой лидер в области ПО и ИТ-услуг
    Поделиться публикацией
    Комментарии 67
    • 0
      Только для Windows 10? Для Windows 7 не будет работать?
      • +1
        Только для Windows Store приложений (в том числе win8). В первую очередь политика, во вторую — несколько разные стеки технологий. МС сейчас работает (хотя по некоторым сведениям с 2010) над переносом классических приложений в стор.
        • 0
          Да пофиг на стор, я хочу просто чтобы на локальной машине компилировался и запускался код на objc (чисто для поиграться).
          У меня на Win7 SP1 установлена VS2015 Community, этот SDK будет работать?
          • +3
            1) на 7ке не работает WinRT SDK, так что нельзя даже если очень захотеть.
            2) На гитхабе написано, что сейчас все работает только на 10ке.

            Обновляйтесь :)
            • 0
              Спасибо, теперь понятно. Но лучше подожду когда Apple портирует Swift на другие платформы, думаю там поинтереснее будет:) С objc можно поиграться и в виртуалке, да и в gcc/mingw в ограниченном объеме — тоже.
      • 0
        На самом деле — попробуйте. Там используется модифицированный clang, возможно результирующие сборки — это обычные нативные DLL. Нужно изучить этот вопрос.
        • 0
          На самом деле — получилось! После запуска проекта запустился инсталлятор Студии, который что-то долго скачивал и устанавливал. После этого проект на ObjC скомпилировался.
          Правда одна странность — в скомпилированном файле WOCCatalog.exe AVG обнаружил вирус Win32/Heri. Ну да ладно, остальные антивирусы на Virustotal ничего не нашли, думаю это ложное срабатывание.
          В общем в итоге под Windows 7 SP1 тестовый проект на objc компилируется. Эмулятор действительно не поддерживается, но предлагается подключить реальный WinPhone девайс (которого у меня тоже нету), так что эксперимент на этом закончен:)
      • 0
        3.Autolayout
        4.Storyboard support
        5.MapKit

        Странно, на билде говорили, что это все есть.

        Добавить можно, что swift тоже не поддерживается.
        • +7
          Название проекта WinObjC вам что-нибудь говорит? Добавить можно что brainfuck не поддерживается
          • 0
            Вот с BF-то как раз проще. Есть BrainFuck.net подключить его к WinRT-проекту, я думаю, можно.

            А про swift я специально прокомментировал, потому что это был первый вопрос докладчику на Build. Начинающие iOS разработчики беспокоятся.
        • +1
          Ох, с asset'ами все действительно очень плохо
          • 0
            Надеюсь это всё же временное решение пока они не сделали модуль для работы с ресурсами
          • +1
            ох, раскатал было уже губу, но для наших проектов без поддрежки autolayout и storyboard не имеет смысла
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                Когда добавят поддержку арма и релизных сборок — можно начинать пробовать. Кроме этого из списка в нашем проекте есть только MapKit. Ехидно посмеиваюсь над любителями IB, автолэйаутов и свифта :)
                • +1
                  И что, даже ассетов нет?
                  • 0
                    А ассетов в списке нет :) Но да, вы верно заметили, ассеты тоже нужны.
                    • 0
                      Не пользовался AssetsLibrary, думал это про них)
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Дело в том, что constraints удобны для использования только в IB. Если отрисовывать интерфейс полностью кодом, то проще реализовать старый добрый layoutSubviews. А уже IB vs программная отрисовка — это отдельная большая тема для рассуждений: в каких-то случаях лучше одно, в других — другое.
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • +2
                          Имхо, смысл не использовать IB есть, когда в приложении сложный UI с большим количеством переходов. В этом случае ваши макеты превратятся в вечнотормозящую (в Xcode) мешанину.
                          • НЛО прилетело и опубликовало эту надпись здесь
                            • 0
                              вот только я так до сих пор не увидел, чтоб из IB можно было задать состояние, когда кнопка selected и pressed одновременно, а из кода можно. Таких моментов дофига, и в целом, я понимаю тех, кто все делает из кода, хотя сам предпочитаю xib
                              • 0
                                Возможно, спорить не буду, опыта использования IB у меня нет. Доводилось просто видеть проекты с описанной мной кашей, в которой очень сложно разобраться.
                    • +2
                      Это без сомнений очень крутая новость, но я надеюсь что разработчики всё-таки будут стараться найти ресурсы сделать UI на XAML, а код на Objective-C использовать для всего остального.
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • +1
                          Глядишь напишут парсер для custom-xml, xib-ов.

                          шо там парсить-то. Самое сложное — порт UIKit уже сделали.

                          А учитывая удобность средств разработки IB и виндовых, никто не будет дергаться.

                          Вы про то, что IB застрял на уровне WinForms?
                          • +1
                            Рынок winphone — да. Но Вы, вероятно, упустили тот момент, что в Win10 что винфон, что «большая» винда — один код и даже один XAML при желании.
                            • НЛО прилетело и опубликовало эту надпись здесь
                              • +1
                                Да ну?
                                • 0
                                  Ну да.

                                  Совокупность андроида сейчас больше чем совокупность винды.
                                  iOS в этом году будет столько же сколько и customer винды

                                  • 0
                                    Что-то Википедия не согласна с вами.
                                    • 0
                                      Devices in use today

                                      Closed, Google Android: 1.25-1.5bn?
                                      Chinese Android -4-500m
                                      PCs: 1.5-1.6bn
                                      -of which consumer PCs: 7-800m
                                      iOS: 7-800m
                                      • 0
                                        И откуда это?
                                          • 0
                                            Ну, ок, Допустим, этот странный чувак со «своей моделью» прав. Все равно получается, что совокупность андроидов не больше совокупности винды.

                                            Хотя методы чувака из венчурного фонда надо проверять.

                                            А статья 2011 года — это вообще прекрасно.
                                            • 0
                                              Этот странный чувак работает в странной конторе которая инвестировала в половину компаний интернета. И в работу чувака входит: I try to work out what's going on and what will happen next.

                                              Идея в том, что андроиды в большинстве своём уже у consumer владельцев, и согласно прикидкам, консьюмеров на этой платформе больше чем на винде.

                                              А статья да, хороша. Даёт возможно оттолкнуться.

                                              1.2 ярда Windows на конец(!) 2011. Я взял статистику Гартнера

                                              2007 272,4
                                              2008 302,2
                                              2009 308,3
                                              2010 350,9
                                              2011 352,8
                                              — 2012 351,0
                                              2013 316,4
                                              2014 315,8

                                              Совокупно за 5 лет (2007-2011) продано 1.586 ярда ПК. Что несколько меньше 1.25 ярда активной Windows. Но будем считать, что время жизни ПК 5 лет.

                                              За 5 лет (2014-2010) 1.6 ярда ПК, отсюда число «PCs: 1.5-1.6bn» выглядит реалистичным, даже если учесть, что входу ПК до 2010 года выпуска.

                                              И 1/2 от 1.6 ярда как консьюмер тоже вполне реалистично.

                                              При этом уже к сентябрю 2013 года был 1 миллиард активаций Google версии Андроида.

                                              Так что модель вполне себе реалистичная.
                                      • 0
                                        Статистика от Akamai. 15-30% трафика интернета.

                                        image
                                        • 0
                                          Даже по этой картинке видно: десктопных браузеров за 50%, исключая сафари. Даже если десятая доля это линукс/макос, то остаётся более 45 процентов на виду. Со статистикой Википедии вполне сходится
                                          • 0
                                            На работе Win ПК, дома Win ПК. А юзер — один.
                                            • 0
                                              Телефон, планшет, а юзер один, и?
                                              • 0
                                                Поэтому, по веб статистике нельзя делать выводов.
                                                Только по device shipments, продажам и активациям.
                                                • 0
                                                  По веб статистике можно судить об активных пользователях. Туда не попадет тонна пылящихся на полках устаревших девайсов, куча серверов, почти не попадет огромное количество тестовых андроидов.
                                                  • 0
                                                    Опять же, телефон, планшет — продажи/активации две, пользователь один.

                                                    Бесполезный спор, короче, кто может в математику, уже давно все понял.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                      • 0
                                                        Рановато вы автоматически к смартфону прикладываете планшет:
                                                        Tablet 2014 Unit Shipments — 229,6 mln
                                                        Worldwide Smartphone Sales to End Users by Vendor in 2014 — 1,244,890 mln

                                                        Смартфонов на Андроиде только за 2014 — 1 миллиард!!!
                                                        А всех Windows устройств — 360 млн!
                                                        • 0
                                                          А всех Windows устройств — 360 млн!

                                                          Что это за цифра и откуда вы ее взяли? Windows устройств порядка 1.3 миллиардов в мире. Андроид устройств не только за 2014, а в целом в мире порядка 1 миллиарда.

                                                          ios аудитория там раза в 2-3 платежеспособнее, чем на остольной совоккупности вместе взятой.

                                                          Фантазии хипстеров это всегда очень смешно.
                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                            • 0
                                                              что ж они ломают телефоны и приложения пиратят. От хорошей жизни, наверное.
                                                              • 0
                                                                after the Pangu 7.1-7.1.2 (7.1.1 at the time) jailbreak came out but here are the results:

                                                                32% had not jailbroken, but wanted to
                                                                25% had not jailbroken, and were against it
                                                                17% had jailbroken and enjoyed it
                                                                17% didn't know what jailbreaking was
                                                                9% had jailbroken, but restored it afterwards

                                                                Статистика о том, что ломают новые аппараты, а не б\у у школьника — отсутствует.
                                                              • 0
                                                                Вы не в курсе про существование телефонов на андройде стоимостью в 1к$(самсунги и прочее)?
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                  • 0
                                                                    ну миллионов 20 в квартал у Samsung vs 50 у Apple.
                                                                • 0
                                                                  А всех Windows устройств — 360 млн!

                                                                  Что это за цифра и откуда вы ее взяли? Windows устройств порядка 1.3 миллиардов в мире.

                                                                  Комменты не читай, а сразу отвечай. (с) народная мудрость

                                                                  360 млн Windows устройств было продано за 2014 год. Числа я взял из отчета Гартнера и Микрософта, а затем сложил. 315,8 + 40.

                                                                  Андроид устройств не только за 2014, а в целом в мире порядка 1 миллиарда.

                                                                  Вы с какого года к нам поступили? 1 миллиард активаций у Андроида был в сентябре 2013. С тех пор прошло два года. Тут речь уже о том, что как бы у Андроида не все 2 миллиарда. И при этом они в карманах пользователей, а не на столах офисов, банкоматах, станках и другом узкоспециализированном оборудовании.
                                                                  • 0
                                                                    К сожалению сам гугл явно не в курсе этих цифр и на Google I/O 2015 глава компании репортовал об 1 миллиарде пользователей андройда:

                                                                    There are now 1 billion Android users, according to Sundar Pichai, head of Google's most important products, including Android, Chrome, Search and Maps. What's more, 8 out of every 10 phones worldwide is operating on Android, he said.

                                                                    И в 2014 было тоже самое

                                                                    image

                                                                    Вы им напишите про 2 миллиарда, пусть порадуются.
                                                                    • 0
                                                                      1) Старайтесь ссылаться на оригинал. На гугл ИО 2015 Сундар сказал, что Google Android имеет более миллиарда пользователей



                                                                      Да, возможно, что 1 миллиард + 1 смартфон, а возможно, что 1 миллиард + 300 млн. (Учитывая продажи за 2014)

                                                                      2) Андроид есть не только у Гугла, но и у Амазона и у кучи китайских товарищей, т.к. Google Play там закрыт. В совокупности их тоже не меньше 500 млн.

                                                                      Отсюда и цифра в 2 миллиарда.

                                    • 0
                                      Очевидно, что польза есть при переиспользовании имеющейся базы кода, например, бизнес-логики, моделей и т.п.
                                      Заниматься сексом с кодом для интерфейса, который при этом еще и выглядит ужасно и непредсказуемо главным образом для дизайнера (не могли что ли отрисовать нормально?) — бессмысленно.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                        • +2
                                          Вот у нас сейчас как раз такой проектик, который на Android и iOS «должен выглядеть одинаково» — хуже не придумаешь: ни для разработчиков, ни для пользователей…
                                        • 0
                                          Просто нарисовали, когда ещё iOS 6 был. Поменять картинки — меньшая из проблем. Тем более, что iOS проектов использующих стандартные контролы (не заменяя картинки) не так уж и много.

                                          А вот то, что CollectionView не перестраивается при изменении окна, NavBar дрожит как припадочный — вот это сложнее. Это ещё ловить надо.
                                        • 0
                                          Интересно скомпилировать свои проекты и посмотреть как будет выглядеть UI с этими компонентами. Да, как уже здесь упоминали Auto layout — must have.
                                          Как мне кажется все это — огромный объем работы, еще и за изменениями в iOS SDK нужно следить постоянно.
                                          Если не секрет, каковы масштабы команды работающей над проектом?
                                          • 0
                                            То есть теперь не обязательно пользоваться макосью под VmWare, вместо симулятора можно использовать нативное Win32 окно?
                                            • +1
                                              Нет, нет, и ещё раз нет. Это НЕ Симулятор. И от iOS эта среда будет отличаться ещё сильнее чем симулятор.
                                            • +3
                                              То чувство, когда портирование Objective-C iOS -> WinStore опенсорсное, бесплатное и разрабатывается МС, а портирование C# WinStore -> iOS закрытое, стоит $1000 в год на разраба на платформу и разрабатывается третьей стороной…

                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                              Самое читаемое