Qt теперь и на Windows Phone

  • Tutorial
Поддержка разработки мобильных приложений — одно из главных направлений совершенствования 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 приложений.
Скриншот окна установки 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. Всем удачных сборок!
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 16

    0
    Можно ли будет собирать приложения под Windows Phone с помощью MinGW?
      +1
      На данный момент видимо нет, так как спецификация qmake
      qmake.exe animatedtiles.pro -r -spec winphone-x86-msvc2012
      явно указывает на то, что используются инструменты Windows.
      +8
      Кстати, на WP проблем с эмуляцией нативного интерфейса гораздо меньше. Можно нарисовать несколько цветных квадратов и не отличишь от нативных кнопок. Серьёзно, на QML очень удобно писать metro-подобные минималистичные интерфейсы.
        +7
        Тем не менее, для этого лучше использовать Qt Quick Controls.
          0
          Я даже где-то видел чудака, который умудрился наклепать QWindowsPhoneStyle, правда, для виджетов.
          +3
          Я не совсем уверен, нужно ли это для успешного запуска приложения на устройстве, но перед сборкой я зарегистрировал устройство (Nokia Lumia 920) с помощью Windows Phone Developer Registration

          Да, это необходимо сделать.
            +4
            А Ларс все-таки не п**дел на Qt Contribs Summit '13, что бета поддержки Windows Phone будет уже к апрелю! С ума сойти, во дает мужик!
              –1
              А во что эти Qt классы потом раскрываются?
              Вообще, как WP разработчик скажу, что идея использования Qt на данной платформе может быть пятой ногой.
                +1
                Это если приложение WP-only, а вот если хочешь иметь одну кодовую базу на Win/Linux/OSX/iOS/Android/WP, то уже другой разговор…
                  0
                  Разговор другой. Однако, начнем с того, что в семействе Windows (десктоп/планшет/телефон) кодовая база и так будет одна и та же. Про другие платформы: Ядро будет на С++, остальное — platform specific. Наличие единой кодбазы — это, имхо, вопрос очень сложный. На сколько это оптимально — зависит от конкретного проекта.
                    0
                    Я не утверждал, что Qt — это серебряная пуля. Но жизнь облегчить может сильно, и не только в части ядра. GUI на нём делать одно удовольствие (тем более с QtQuick), причём части этого GUI можно использовать повторно на разных платформах.
                0
                Только для WinP 8 или и на WinP 7.* будут работать создаваемые приложения?
                  +2
                  Насколько мне известно, в Qt язык программирования — C++, а он поддерживается мобильной платформой от Microsoft только начиная с 8 версии.

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

                  PS: да простят меня владельцы аппаратов на wp7.8 ))
                  • UFO just landed and posted this here
                      0
                      <оффтоп>
                      Если бы не одна «забавная» случайность, я, возможно, был бы в вашем лагере. Но как раз в тот момент, когда я метался между покупкой wp8 аппарата для полноценного тестирования при разработке, я уронил свой Samsung Omnia W по возможности фееричней. Не знаю как это смотрелось со стороны, но когда я доставал его из кармана, он зацепился за что-то и неудачно выскочил из моих рук… я его почти поймал в воздухе раза четыре, но каждый раз он ускользал. В итоге приземления на асфальт экраном вниз сам аппарат выдержал, все работало в штатном режиме. За исключением того факта, что стекло покрылось аккуратными разводами трещин и постепенно начали высыпаться наиболее мелкие из осколков.
                      </оффтоп>

                      Если бы не этот случай, я бы как предвзятый разработчик, может быть, и старался поддерживать обе платформы и продолжать кушать свой кактус, но сейчас…
                    0
                    WP7 не поддерживает С++. Так что надеяться не стоит.

                  Only users with full accounts can post comments. Log in, please.