Поддержка разработки мобильных приложений — одно из главных направлений совершенствования Qt. Готовится к выпуску Qt 5.3 и QtCreator 3.1, которые благодаря поддержке WinRT позволят запускать Qt-приложения на новых платформах. Но не дожидаясь релиза уже сейчас можно скачать Qt 5.3 beta и собрать Ваши приложения для мобильных платформ Windows. Новые инструменты позволяют запускать приложения как в эмуляторе, так и непосредственно на подключенном устройстве. Благодаря этому сегодня автор статьи (незнакомый ранее с разработкой для мобильных устройств) собрал первое в своей жизни (пусть и из папки demos) мобильное приложение. Этот факт может служить доводом в пользу разработки приложений под Windows Phone с использованием инструментария Qt. Статья, по моему скромному мнению, будет интересна как опытным разработчикам Windows Phone приложений, так и программистам, которые ранее разрабатывали только Desktop приложения с использованием Qt.
1. Прежде всего необходимо скачать и установить Qt 5.3 beta для WinRT (файл qt-opensource-windows-x86-winrt-5.3.0-beta.exe )
2. Если у вас еще не установлен Microsoft Visual Studio 2012 или 2013, то необходимо будет скачать и установить одну из этих версий, для описываемых в статье целей подходит как Microsoft Visual Studio Express 2013 для Windows Desktop так и Microsoft Visual Studio Express 2012 для Windows Desktop.
Примечание: если вы устанавливаете VS2013 Professional или Ultimate, то не забудьте в опциях установки включить поддержку разработки Windows Phone приложений.
3. Для Visual Studio Express также понадобится с страницы загрузок Windows Phone SDK скачать и установить необходимый Вам SDK (так как у меня под рукой оказалась Nokia Lumia 920 c Windows Phone 8 на борту, то я установил SDK 8.0, который также поддерживает Windows Phone 7.5).
Вроде все готово, можно запускать QtCreator.
Прежде всего это новый плагин WinRT (на всякий случай проверьте, активирован ли он):
Теперь при создании нового проекта в ниспадающем списке фильтров шаблонов появляются новые строчки:
Создавая проект теперь можно выбрать дополнительные типы сборок (на рисунке не указана WinRT сборка, так как в данной статье она не рассматривается):
Запустив на выполнение первый тип сборки приложение сразу будет отправлено на подключенное Windows Phone устройство, как показано на видео:
Второй тип сборки (как видно из названия) отправляет приложение на эмулятор:
Если ряд необходимых компонентов, перечисленных выше, отсутствует, то вам об этом сообщит вот такой красный предупреждающий кружок в IDE QtCreator:
Но помимо этого существует и рад других возможных проблем, о которых стоит упомянуть (и с которыми автор столкнулся лично).
Во-первых, понадобится включить Hyper-V (если он еще не включен). Руководство: How to enable Hyper-V for the emulator for Windows Phone 8.
Второе, с чем может столкнуться разработчик, — это 2 сообщения об ошибках при запуске эмулятора:
Обычно у разработчика установлена не одна программа виртуализации (на подобии VMWare или Virtual Box). Так как эмулятор также использует сетевой интерфейс, то может возникать конфликт с созданными этими программами сетевыми интерфейсами. Проблема обычно решается удалением этих программ или более тонко, используя программу «Диспетчер Hyper-V», как описано в руководстве Troubleshooting the Windows Phone 8 Emulator.
Третья потенциальная проблема связана уже непосредственно с Qt. Запуская сборку для устройства может появиться такое сообщение:
открыв файл WMAppManifest.xml можно убедиться, что ProductID действительно отсутвует:
но в сборку для эмуляции ProductID записывается, поэтому можно его скопировать и вставить в XML файл:
после этого запуск должен происходить без проблем.
Я не совсем уверен, нужно ли это для успешного запуска приложения на устройстве, но перед сборкой я зарегистрировал устройство (Nokia Lumia 920) с помощью Windows Phone Developer Registration
Также следует помнить, что во время развертывания приложения смартфон должен быть в «активном» режиме, а не в режиме блокировки.
P.S. а вот так выглядит иконка Qt-приложения в Windows Phone. Всем удачных сборок!
Установка необходимого ПО
1. Прежде всего необходимо скачать и установить Qt 5.3 beta для WinRT (файл qt-opensource-windows-x86-winrt-5.3.0-beta.exe )
Скриншот окна установки с выбором компонентов
2. Если у вас еще не установлен Microsoft Visual Studio 2012 или 2013, то необходимо будет скачать и установить одну из этих версий, для описываемых в статье целей подходит как Microsoft Visual Studio Express 2013 для Windows Desktop так и Microsoft Visual Studio Express 2012 для Windows Desktop.
Примечание: если вы устанавливаете VS2013 Professional или Ultimate, то не забудьте в опциях установки включить поддержку разработки Windows Phone приложений.
Скриншот окна установки MSVS 2013 Express
3. Для Visual Studio Express также понадобится с страницы загрузок Windows Phone SDK скачать и установить необходимый Вам SDK (так как у меня под рукой оказалась Nokia Lumia 920 c Windows Phone 8 на борту, то я установил SDK 8.0, который также поддерживает Windows Phone 7.5).
Вроде все готово, можно запускать QtCreator.
Новое в Qt 5.3 beta и QtCreator 3.1 RC1 для мобильных Windows платформ
Прежде всего это новый плагин WinRT (на всякий случай проверьте, активирован ли он):
Теперь при создании нового проекта в ниспадающем списке фильтров шаблонов появляются новые строчки:
Создавая проект теперь можно выбрать дополнительные типы сборок (на рисунке не указана WinRT сборка, так как в данной статье она не рассматривается):
Запустив на выполнение первый тип сборки приложение сразу будет отправлено на подключенное Windows Phone устройство, как показано на видео:
Второй тип сборки (как видно из названия) отправляет приложение на эмулятор:
Возможные проблемы и их устранение
Если ряд необходимых компонентов, перечисленных выше, отсутствует, то вам об этом сообщит вот такой красный предупреждающий кружок в IDE QtCreator:
Но помимо этого существует и рад других возможных проблем, о которых стоит упомянуть (и с которыми автор столкнулся лично).
Во-первых, понадобится включить Hyper-V (если он еще не включен). Руководство: How to enable Hyper-V for the emulator for Windows Phone 8.
Второе, с чем может столкнуться разработчик, — это 2 сообщения об ошибках при запуске эмулятора:
Обычно у разработчика установлена не одна программа виртуализации (на подобии VMWare или Virtual Box). Так как эмулятор также использует сетевой интерфейс, то может возникать конфликт с созданными этими программами сетевыми интерфейсами. Проблема обычно решается удалением этих программ или более тонко, используя программу «Диспетчер Hyper-V», как описано в руководстве Troubleshooting the Windows Phone 8 Emulator.
Третья потенциальная проблема связана уже непосредственно с Qt. Запуская сборку для устройства может появиться такое сообщение:
открыв файл WMAppManifest.xml можно убедиться, что ProductID действительно отсутвует:
но в сборку для эмуляции ProductID записывается, поэтому можно его скопировать и вставить в XML файл:
после этого запуск должен происходить без проблем.
Я не совсем уверен, нужно ли это для успешного запуска приложения на устройстве, но перед сборкой я зарегистрировал устройство (Nokia Lumia 920) с помощью Windows Phone Developer Registration
Также следует помнить, что во время развертывания приложения смартфон должен быть в «активном» режиме, а не в режиме блокировки.
P.S. а вот так выглядит иконка Qt-приложения в Windows Phone. Всем удачных сборок!