Портирование приложений iOS* на Windows 8*

Скачать статью

Скачать статью Porting iOS* Apps to Windows* 8 - Overview [Eng., PDF 841KB]

Цель

Перед разработчиками, собирающимися портировать существующие приложения для iOS на платформу Windows 8, возникает целый ряд проблем. В этой статье мы описываем различия между этими платформами и показываем, каким образом разработчики могут подойти к вопросу переноса приложений. Мы сравниваем средства разработки для обеих платформ и указываем на различия между платформами. Также обсуждается процесс создания простых приложений, их упаковка, различия между магазинами приложений. Рассматриваются и фундаментальные принципы программирования приложений, такие как пользовательский интерфейс и обработка ввода.

Содержание

  1. Введение
  2. Среды разработки и инструменты
  3. Приложения для iOS и приложения для Windows 8
  4. Пользовательский интерфейс приложений и обработка ввода
  5. Выводы

1. Введение

Windows 8 является новой версией самой распространенной операционной системы для настольных ПК. С точки зрения разработчика в новой версии существенно изменился подход к проектированию, разработке и сборке приложений. Весь процесс разработки приложений полностью пересмотрен, чтобы поддерживать новые функции пользовательского интерфейса и возможности современных мобильных устройств, таких как планшеты и ультрабуки.

С появлением новых устройств, таких как смартфоны и планшеты, для них разрабатывается все больше программ. В настоящее время для iOS и для других мобильных платформ доступны сотни тысяч приложений.

Разработчики, уже выпустившие приложение для iOS, могут рассмотреть возможность выпуска своего приложения и для новой операционной системы — Windows 8. Впрочем, здесь можно возразить, что эти две операционные системы, их приложения, их среды разработки совершенно разные. Но на высоком уровне они обладают рядом общих особенностей, таких как поддержка сенсорного управления, датчиков, мобильных устройств и других возможностей оборудования. Разработка приложений для Windows 8 открывает немало преимуществ и возможностей. В данной статье мы опишем различия между этими двумя платформами и расскажем об основах портирования приложений iOS на платформу Windows 8.

Все задачи и проблемы, которые возникают в процессе прортирования приложений, можно разделить на следующие категории: среды разработки и инструментов; различия в платформах приложений; общие различия между ОС и их экосистемами.

Ниже приведено несколько снимков экрана iOS и Windows 8, где прекрасно видны различия:



Рисунок 1: «Домашний экран» в iOS*. (Источник изображения: www.apple.com/iphone)



Рисунок 2: Главный экран Windows 8* (снимок экрана Windows Simulator)

Как видно на этих двух скриншотов, данные операционные системы значительно отличаются друг от друга. В новом пользовательском интерфейсе Windows 8 с главного экрана удалены все уведомления, не связанные с приложениями (такие как область уведомлений и другие значки). Во главу угла при разработке новых приложений для Windows 8 было поставлено содержимое: от классического пользовательского интерфейса приложений постарались избавиться. Кроме того, в Windows 8 появилась уникальная особенность пользовательского интерфейса — так называемые «плитки», которыми представлено каждое приложение на главном экране Windows 8. Содержимое плиток может динамически обновляться (на них отображаются данные приложений), поэтому они также называются динамическими плитками.

2. Среда разработки и инструменты

При рассмотрении возможностей портирования приложения с одной платформы на другую важным фактором для разработчиков является среда и средства разработки. Согласно современной отраслевой тенденции среда разработки должна обладать наибольшей возможной степенью интеграции. Компании пытаются предоставить инструменты для всех этапов разработки: для написания кода, отладки, тестирования, сборки, упаковки и даже для публикации приложений в магазинах.

Разработчики, обладающие опытом создания приложений для платформы iOS и решившие перенести свои приложения на платформу Windows 8, обнаружат, что для Windows 8 существуют крайне мощные и полнофункциональные среды и средства разработки. Корпорация Apple требует приобретать лицензию разработчика для развертывания приложений, написанных в среде разработки XCode*, но в Windows 8 такого требования нет. В среде разработки Visual Studio* 2012 можно создавать локальные пакеты для тестирования на устройствах. Но для развертывания приложений в Windows Store корпорация Microsoft, как и Apple, требует приобретения платной лицензии. На следующем снимке экрана среды разработки Visual Studio показаны возможности развертывания:



Рисунок 3: Развертывание приложения для Windows 8* (снимок экрана среды разработки VS)

В Windows 8 разработчики могут выбрать предпочитаемый язык программирования. Поддерживается несколько языков программирования: C++, C#, Visual Basic* и JavaScript*/HTML5. Все эти языки программирования являются «полноправными», то есть они имеют доступ ко всем ресурсам и компонентам системы и используют общий API Windows 8 (Windows Runtime).

Еще одна важная область — интегрированная среда разработки. Разработчики для iOS используют среду XCode, а разработчики для Windows 8 используют среду Visual Studio* 2012, которая была обновлена для поддержки новой платформы Windows 8. Решение Blend для Visual Studio 2012 поможет при интерактивной разработке и тестировании пользовательского интерфейса приложений для Windows 8 (на базе XAML). Blend также поддерживает возможность создания пользовательского интерфейса приложений с помощью HTML5 и стилей CSS3. Перечисленные средства можно загрузить по приведенной ниже ссылке:

http://msdn.microsoft.com/en-us/library/windows/apps/hh974577.aspx

Для разработки приложений, предназначенных для публикации в Windows Store, следует использовать Visual Studio 2012 и Windows 8, поскольку новые приложения используют платформу и интерфейсы API Windows 8.

Аналогично шаблонам проектов приложений для iOS в Visual Studio 2012 также содержатся шаблоны различных приложений для Windows 8 на разных языках программирования.

На приведенных ниже снимках экрана показаны шаблоны приложений на языках JavaScript и C++:



Рисунок 4: Шаблоны проектов JavaScript* (снимок экрана Visual Studio* 2012)



Рисунок 5: Шаблоны проектов Visual C++* (снимок экрана Visual Studio* 2012)

Для Visual C#* и Visual Basic также предусмотрены аналогичные шаблоны проектов.

Разработчики приложений для iOS, желающие полностью переписать свои приложения для Windows 8, могут использовать для начала один из описанных выше шаблонов.

Следует рассказать о мощном средстве разработки пользовательского интерфейса для Windows 8 — это решение Blend для Visual Studio 2012. Оно полностью интегрируется в среду разработки Visual Studio и предельно упрощает цикл разработки. Blend можно вызвать непосредственно из среды разработки VS 2012. Blend поддерживает создание пользовательских интерфейсов на основе XAML, а также приложений на основе HTML5/CSS3.

Ниже показан снимок экрана Blend с выбранным шаблоном «Разделенное приложение (XAML)» для Visual C#:



Рисунок 6: Редактирование пользовательского интерфейса на базе XAML (снимок экрана Blend для Visual Studio*)

Blend — это исключительно мощное и функциональное средство создания пользовательского интерфейса . Поддерживается интерактивное проектирование и редактирование пользовательского интерфейса, а также быстрое тестирование. Например, в Blend для приложений HTML5/CSS3 можно «вживую» редактировать HTML DOM и стили CSS3 и сразу же видеть результат. Это очень удобно для подбора различных свойств стилей, разметок и тем.

Ниже приведен снимок экрана Blend при создании приложения HTML5/CSS3:



Рисунок 7: Редактирование пользовательского интерфейса на базе HTML5/CSS3 (снимок экрана Blend для Visual Studio*)

Blend для Visual Studio 2012 содержит мощные средства тестирования для различных областей экрана и различных представлений.

На следующем рисунке показаны возможности тестирования приложений Windows 8 для различных представлений и размеров экрана, поддерживаемых платформой Windows 8:



Рисунок 8: Различные представления и характеристики тестовых экранов (снимок экрана Blend для Visual Studio*)

При разработке современных приложений также используются различные эмуляторы. Для iOS в XCode используется эмулятор устройств iOS с поддержкой различных конфигураций. Можно выбрать, какие устройства должно поддерживать приложение: iPad* и iPhone* одновременно или только один из типов устройств. Для Windows 8 был создан эмулятор, полностью интегрированный в среду разработки Visual Studio 2012 и в цикл разработки приложений. Он воспроизводит ряд основных компонентов платформы, таких как сенсорный ввод, данные геопозиционирования, камера, датчик ориентации устройства, и поддерживает различные типоразмеры устройств с различными размерами экрана.

Эмулятор Windows 8 можно вызвать непосредственно из среды разработки VS 2012. На приведенном ниже рисунке показаны его компоненты и основные возможности:



Рисунок 9: Кнопки и различные характеристики экранов в Windows* 8 Simulator (снимок экрана Windows 8 Simulator).

Также необходимо протестировать приложение не на эмуляторе, а на настоящем устройстве. В XCode можно выбрать «iOS Device» (Устройство iOS) в соответствующем раскрывающемся меню среды разработки. Приложения для Windows 8 можно тестировать на удаленных устройствах с помощью средств удаленной отладки для Visual Studio. Нужно установить эти средства на целевом устройстве и настроить их, а затем использовать Visual Studio для удаленной отладки. По приведенной ниже ссылке находится подробное руководство по запуску приложений, предназначенных для Windows Store, на удаленной системе:

http://msdn.microsoft.com/en-us/library/hh441469.aspx

В Visual Studio можно выбрать целевую платформу для отладки: эмулятор, локальный компьютер или удаленный компьютер. На следующем рисунке показаны варианты отладки в Visual Studio 2012:



Рисунок 10: Варианты целевой платформы отладки (снимок экрана Visual Studio* 2012)

Еще одним важным фактором при разработке является сборка приложений, их упаковка и публикация в магазинах приложений. В случае с iOS в среде разработки XCode интегрирован и автоматизирован процесс сборки, подписания и упаковки приложений с помощью доверенного сертификата ключа разработчика. Аналогичным образом для Windows 8 предоставляется всеобъемлющая поддержка всего цикла разработки приложений, от разработки и сборки до подписания, получения сертификатов, упаковки и прямой интеграции в Windows Store.

В приведенной ниже таблице содержится сводка данных, описанных в этом разделе (таблица не является исчерпывающей, каких-то сведений в ней может не быть).

КомпонентiOS*Windows* 8

IDE

XCode*

Visual Studio* 2012, Blend для VS 2012

Среда программирования

Objective C*, Cocoa* Application, Cocoa-AppleScript* Application, C/C++ Library, STL C++, OpenGL ES*, Quartz 2D*

C++, C#, Visual Basic*, XAML, JavaScript*/HTML5, DirectX*

SDK

iPhone*/iPad* SDK, Cocoa* Touch APIs, Quartz*, OpenAL*, Core Animation* и т.д.

Windows 8 Runtime APIs, Windows Services APIs (например, Bing SDK) и т.д..

Отладчик

GDB, LLDB*

Средства отладки Visual Studio. В зависимости от API и языка программирования: отладка JavaScript, отладка управляемого кода, отладка DirectX и пр.

Эмуляция устройства

iOS Simulator

Windows 8 Simulator

Доступ к устройствам и удаленная отладка

Отладка GDB через XCode, удаленная отладка в XCode 4 не поддерживается в настоящее время

Средства удаленной отладки Visual Studio

Тестирование

Различные конфигурации эмулятора и устройств XCode GDB, тестирование пользовательского интерфейса, модульное тестирование ПО

Windows 8 Simulator, Expression Blend* для быстрого интерактивного создания и тестирования пользовательского интерфейса, модульное тестирование ПО

Упаковка приложений

Архивный файл XCode, содержащий приложение, файл со списком свойств, ресурсы и другие файлы

Архивный APPX-файл, содержащий приложение, манифест пакета, ресурсы и другие файлы

Магазин

Apple Store

Windows Store

3. Приложения для iOS и приложения для Windows 8

Для переноса приложений с iOS на Windows 8 необходимо изучить различия между этими платформами. Принципы работы приложений на этих платформах совершенно различны — от низкоуровневого взаимодействия с ОС до высокоуровневых абстракций, таких как пользовательский интерфейс.

Но прежде чем погрузиться в подробности, следует остановиться на одном крайне важном вопросе. Дело в том, что Windows 8 поддерживает два типа приложений: «новые» приложения для Windows 8 («приложения для Windows Store») и «традиционные» приложения для Windows («классические» приложения).

Существующие классические приложения будут работать под управлением Windows 8 точно так же, как и в более ранних версиях Windows. Впрочем, теперь классические приложения могут использовать новые возможности платформы Windows 8, такие как сенсорное управление, датчики и пр. Но некоторые новые возможности Windows 8 (динамические плитки, новый жизненный цикл приложений, «песочница» для безопасного выполнения и т. п.) могут быть недоступны в классических приложениях.

На странице по приведенной ниже ссылке дано общее описание новых приложений для Windows Store:

http://msdn.microsoft.com/en-us/library/windows/apps/hh974576.aspx

Каждое приложение для iOS состоит из трех основных частей:

  • Компоненты приложения (представления, службы, поставщики содержимого, получатели вещания).
  • Файл со списком свойств (определяет конфигурацию пакета, структуры XML, идентификаторы и пр.).
  • Ресурсы приложения (изображения, мультимедиа, языковые строки, поддержка языков, ресурсы для различных типов устройств и пр.)

Приложения для Windows Store также состоят из схожих частей, хотя эти части могут не вполне точно соответствовать используемым в приложениях для iOS:

  • Различные компоненты приложения (основной компонент приложения, контракты приложения, расширения, фоновые задачи, уведомления, плитки и пр.).
  • Манифест пакета приложения (определяет идентификацию пакета, его свойства, возможности и разрешения, расширения, наглядные элементы и пр.).
  • Ресурсы приложения и локализация (PRI-файл с индексом ресурсов пакета; все ресурсы приложения проиндексированы и сопоставлены).

На приведенном ниже рисунке показаны возможности и доступные объявления в манифесте пакета Windows 8 для образца приложения:



Рисунок 11: Манифест пакета: возможности (слева) и объявления (справа). (Снимок экрана Visual Studio* 2012)

Приложения Apple, как и приложения для Windows Store, обладают строго определенным жизненным циклом, то есть набором состояний, через которые приложение проходит от начала и до конца. На странице по приведенной ниже ссылке показан жизненный цикл приложений для Windows Store:

http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx

Как и в iOS, в Windows 8 для приложений поддерживаются различные представления (книжная ориентация, альбомная ориентация), различные размеры экрана и пр. Помимо этого, в Windows 8 поддерживаются еще два представления, отсутствующие в iOS: «прикрепленное представление» и «заполненное представление».

На приведенном ниже снимке экрана показано приложение для Windows 8 в четырех представлениях: альбомная ориентация, книжная ориентация, прикрепленное представление (слева снизу, приложение Windows Store в заполненном представлении) и заполненное представление (справа снизу, приложение Windows Store в прикрепленном представлении).



Рисунок 12: Образец приложения для Windows 8* в различных представлениях (снимок экрана Windows 8 Simulator)

Руководство по созданию прикрепленных и заполненных представлений см. по ссылке:

http://msdn.microsoft.com/en-us/library/windows/apps/hh465371.aspx

Еще одно существенное различие — общие элементы управления приложениями и элементы пользовательского интерфейса. В iOS для выполнения различных задач предусмотрены разные панели — панель переходов, панель поиска и т. д. В Windows 8 панель приложения служит основным интерфейсом команд приложений для Windows Store. Панель приложения аналогично панели переходов в iOS можно использовать для навигации и для других действий приложения. По умолчанию панель приложения скрыта в приложениях для Windows 8, и ее можно вызвать при помощи соответствующего жеста. Поведение панели приложения можно настраивать в соответствии с необходимостью (она может быть всегда активной, скрываться по прикосновению и пр.). На следующем рисунке показана панель приложения Internet Explorer в Windows 8*.



Рисунок 13: Панель приложения в Internet Explorer* 10 (снимок экрана Windows* 8 Internet Explorer).

Панель приложения может находиться в верхней части экрана, в нижней или же одновременно и сверху, и снизу. Открыть панель приложения можно жестом, проведя к середине экрана либо с его верхней части, либо с нижней. При управлении с помощью клавиатуры и мыши нужно щелкнуть окно приложения правой кнопкой мыши, чтобы открыть панель.

Чудо-кнопки — это новый уникальный элемент приложений Windows 8. Это определенный набор кнопок, общих для всех приложений. Для их вызова используется соответствующий жест. Вот эти кнопки: «Поиск», «Общий доступ», «Подключение к устройствам» и «Параметры».

На следующем рисунке показана панель чудо-кнопок, открытая в приложении Windows Store:



Рисунок 14: Панель чудо-кнопок в приложении Windows Store

Панель чудо-кнопок обычно находится на правой стороне экрана; для ее вызова нужно провести по экрану от правого края к середине.

Следующее существенное отличие — это, разумеется, языки программирования и API платформы. Поскольку для создания приложений iOS используется язык программирования Objective C, для переноса приложений на платформу Windows 8 потребуется переписать код приложения на одном из языков программирования, поддерживаемых системой Windows 8. В зависимости от функциональности, требований и возможностей приложений в Windows 8 могут быть эквивалентные API, которыми можно будет воспользоваться. Например, перенести функциональность сенсорного управления и датчиков можно с помощью эквивалентных API Windows 8. Подробный справочник по API для приложений Windows см. по ссылке:

http://msdn.microsoft.com/en-us/library/windows/apps/br211369

В этом разделе мы перечислили основные области, требующие работы при переносе приложений iOS на платформу Windows 8. Как видно, многие высокоуровневые концепции очень похожи. Разработчики могут сопоставить схему и логику своих приложений соответствующим и эквивалентным механизмам в Windows 8. Иногда такое сопоставление будет неточным из-за отсутствия определенных компонентов или применения совершенно другого механизма реализации. Например, в iOS Storyboard разработчики могут перетаскивать объект DatePicker (календарь) в макет приложения. При разработке приложений для Windows 8 аналогичная операция перетаскивания доступна в Java, но отсутствует в C#. Разработчикам потребуется создавать собственный элемент выбора даты.

Удобный способ создания элемента выбора даты в C# описывается в этом блоге: http://software.intel.com/en-us/blogs/2012/12/14/how-to-make-a-date-picker-calendar-for-c-sharp-in-windows-8

В таких случаях может потребоваться переписать определенный компонент приложения. Кроме того, приложения можно расширить, добавив в них поддержку уникальных возможностей Windows 8, таких как динамическая плитка, новые типы представлений и пр. Это поможет повысить удобство пользователей при работе с приложением на платформе Windows 8.

4. Пользовательский интерфейс приложений и обработка ввода

Предыдущий раздел был посвящен основным принципиальным различиям между приложениями для платформы iOS и приложениями для платформы Windows 8. В этом разделе мы развиваем начатое и подробнее рассматриваем перенос одной из основных, важнейших частей любого приложения: пользовательского интерфейса и обработки ввода.

В Windows 8 пользовательский интерфейс приложения можно создать различными способами:

  • XAML и C++/C#/VB
  • HTML5/CSS3 и JavaScript
  • Прямой графический интерфейс с помощью DirectX/C++ (возможно некоторое использование XAML)
  • Традиционный пользовательский интерфейс классических приложений

Выбирая способ создания пользовательского интерфейса, следует внимательно изучить все аспекты приложения. Следует учитывать требования к приложению и планы по его дальнейшему расширению. Например, если существующее приложение широко использует веб-интерфейс или значительный объем кода HTML, то имеет смысл разрабатывать пользовательский интерфейс приложения с помощью JavaScript/HTML5. С другой стороны, если для приложения требуется высокопроизводительная обработка графики и полный контроль над графическим процессором, целесообразно использовать DirectX/C++. Как было отмечено выше, все языки программирования имеют одинаковый доступ ко всем ресурсам системы (с помощью общего API Windows 8 Runtime).

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

Выбрав нужную среду программирования, можно изучить остальные аспекты пользовательского интерфейса, такие как управление окнами, обработка представлений, стили, элементы управления пользовательского интерфейса, анимация и пр. Все эти возможности могут довольно сильно отличаться в зависимости от используемой среды. Например, приложения HTML5 имеют собственные методики обработки событий (согласно стандартам HTML DOM и веб-стандартам) и применения стилей (CSS3).

В приложениях для iOS пользовательский интерфейс типичного приложения состоит из нескольких компонентов «представлений» с «переходами» между ними. В этих компонентах размещаются объекты типа «представление» и «групповое представление», реализующие элементы пользовательского интерфейса, такие как кнопки и разметки. Эта платформа поддерживает весь жизненный цикл пользовательского интерфейса, его базовые технологии, ввод и обработку событий. В Windows 8 реализована крайне мощная платформа пользовательского интерфейса и модель программирования, реализующая общие для всей системы принципы пользовательского интерфейса:

  • Общий стиль внешнего вида — шрифты, разметка, элементы навигации, анимация.
  • Сенсорное управление — хорошо определенные, единые для всей системы сенсорные жесты, в том числе и новые возможности, такие как «смысловое» масштабирование.
  • Привязка и масштабирование — поддержка новых представлений, различных форматов и размеров экрана.
  • Общие элементы управления пользовательского интерфейса — кнопки, списки, панель приложений, чудо-кнопки, параметры и пр.
  • Плитки и уведомления

Подробное обсуждение пользовательского интерфейса для приложений для Windows Store см. по ссылке:

http://msdn.microsoft.com/en-us/library/windows/apps/hh779072.aspx

При создании пользовательского интерфейса приложений для Windows 8 мы настоятельно рекомендуем разработчикам использовать решение Blend для Visual Studio 2012. Blend поддерживает создание пользовательских интерфейсов на основе XAML, а также на основе HTML5/CSS3. Это решение содержит мощные инструменты и средства работы над пользовательским интерфейсом, в том числе возможность быстрого интерактивного тестирования пользовательского интерфейса.

Руководство по коду сенсорного ввода Windows 8 (C#) см. в статье «Поддержка сенсорного ввода в Metro-приложениях Windows 8* с помощью C#»:

http://msdn.microsoft.com/en-us/library/windows/apps/hh868262

For a full step-by-step dive into the details of Windows 8 touch code (C#), take a look at this article titled "Enabling Touch in Windows 8* Style UI Apps with C#":

http://software.intel.com/en-us/articles/enabling-touch-in-windows-8-metro-style-apps-with-c

В этой статье сначала рассматриваются основы сенсорного ввода, а затем и более сложные сценарии (например, настраиваемые жесты). Эта статья поможет при переносе приложений между платформами любого уровня.

5. Заключение

Для успешного портирования приложений для iOS на платформу Windows 8 требуется составить подробный план и приложить немало усилий. Процесс переноса можно упростить и ускорить, если подробно узнать, каким образом компоненты и возможности платформы iOS соотносятся с компонентами и возможностями Windows 8. Если разработчикам удастся на принципиальном уровне сопоставить логику своих приложений с соответствующими функциями Windows 8, то перенос приложений будет значительно упрощен.

В этой статье мы описываем различия между этими платформами и сопоставляем возможности платформы iOS с соответствующими возможностями Windows 8. Мы рассмотрели базовые характеристики: средства разработки, среды программирования, различия между платформами, принципы программирования пользовательского интерфейса.

*Другие наименования и товарные знаки могут быть собственностью третьих лиц.

© Intel Corporation, 2012. Все права защищены.

OpenGL является охраняемым товарным знаком, а OpenGL ES является товарным знаком корпорации Silicon Graphics Inc. Товарные знаки используются с разрешения Khronos..

Теги:
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.