Как быстро начать разрабатывать на Qt/QML для BlackBerry PlayBook и заставить всех тебе завидовать

    BlackBerry PlayBook становится всё более и более привлекательной платформой для Qt-разработчиков. Всё идёт к тому, что Qt будет включён в стандартный набор библиотек планшета. Благодаря чему платформа PlayBook (а вслед за ней и платформа BlackBerry 10) вызывает интерес у Qt-разработчиков. Так что в этой небольшой заметке я хотел бы рассказать, как прямо сейчас можно начать разрабатывать на Qt для BlackBerry PlayBook. Будет описан процесс настройки среды разработки с нуля до состояния, когда можно начинать писать приложения. На самом деле мне уже несколько раз задавали подобные вопросы, что и подвигло меня на написание этой публикации.

    Для того, чтобы начать разрабатывать на Qt для PlayBook мы вместе выполним следующие шаги:
    • Установим Native SDK
    • Настроим систему для подписывания и установки приложений
    • Соберём Qt
    • Создадим и настроим проект Qt-приложения
    Чтобы не загромождать публикацию всеми подробностями и нюансами, я не буду рассказывать всё в деталях и иногда буду отсылать к документации и другим ресурсам.

    Поскольку я разрабатываю в среде Linux, то буду описывать всё применительно к ней. Но аналогичным или схожим образом можно вести разработку в Windows и Mac OS X. Для всех трёх систем доступны инструменты разработки Native SDK (NDK). Если возникнут сложности, то можно проконсультироваться на форуме разработчиков (англ. + рус.).

    Установка Native SDK


    Перед тем как мы приступим непосредственно к установке NDK, стоит пояснить ситуацию с версиями PlayBook OS. На данный момент официально выпущена версия BlackBerry PlayBook OS 2.0, но средства разработки Native SDK 2.0 пока доступны в виде бета-версии. Но не стоит опасаться бета-версии, я думаю, что релиз появится в ближайшее время. Возможно, когда Вы будете это читать, NDK 2.0 уже выйдет.

    Скачайте Native SDK 2.0 и симулятор для своей операционной системы, перейдя по ссылке. В установке NDK ничего сложного нет, потребуется только выбрать каталог, куда устанавливать. Native SDK представляет собой QNX Momentics (т.е. основан на Eclipse), дополненный инструментами BlackBerry. Симулятор это образ виртуальной машины для VMWare.

    Получение ключей и всего необходимого для подписывания приложений


    Сначала надо получить ключи. Для этого перейдите по ссылке и заполните форму. Убедитесь, что выбрали ключи для PlayBook'а в поле «Select a Key». Через какое-то время на указанный почтовый адрес Вы получите ключи. Сохраните их в каталоге ~/.rim (для Linux).

    После того, как ключи будут получены необходимо их зарегистрировать. Выполните следующие команды:

    $ /path/to/ndk/bbndk-env.sh
    $ blackberry-signer -register -storepass <пароль> -csjpin <PIN> client-RDK-<XXXXX>.csj client-PBDT-<XXXX>.csj

    Здесь <пароль> это пароль, который вы выбрали; а <PIN> это PIN планшета, который вы указали в форме запроса ключей.

    Ещё можно сделать отладочный ключ (debug token) и установить его на PlayBook (для симулятора это не требуется). Однако, если мы собираемся работать в IDE, то среда разработки сама сообщит, что требуется ключ, поможет сгенеририровать и установить его на устройство. Если вам интересно, как это можно сделать при помощи утилит командной строки, то ознакомьтесь с руководством Getting Started with Qt on Blackberry.

    Сборка Qt для PlayBook


    Библиотеки Qt не входят в состав стандартного набора компонентов прошивки PlayBook, будем надеяться, что в скором времени это будет исправлено, т.к. ведутся работы по переносу Qt для PlayBook с GitHub в основной репозиторий Qt. А пока нам надо самостоятельно скачать исходный код Qt, собрать его для PlayBook и установить на инструментальной системе.

    Скачайте архив qt-qnx-preview.tar.gz из GitHub, распакуйте и выполните следующие команды:

    $ /path/to/ndk/bbndk-env.sh
    $ ./configure-qnx

    Не постесняйтесь заглянуть внутрь скрипта configure-qnx. Там можно добавить нужные вам опции сборки Qt. Лично я немного изменил скрипт, чтобы Qt устанавливался не в текущий каталог, а в каталог target в NDK:

    #!/bin/sh
    
    ./configure -opensource -confirm-license -qpa -shared -release \
        -xplatform unsupported/blackberry-armv7le-qcc -little-endian -arch arm \
        -iconv -largefile -nomake examples -xmlpatterns -no-webkit -no-neon -no-rpath -opengl es2 \
        -prefix-install -prefix ${QNX_TARGET}/../target-override/armle-v7/usr/lib/qt4 \
        -headerdir ${QNX_TARGET}/../target-override/usr/include/qt4
    

    Теперь уже можно с чистой совестью выполнить:

    $ make -j12
    $ make install

    На этом всё. Пожалуй, больше на тему сборки Qt для PlayBook распространяться не буду. Для быстрого старта рассказанного будет достаточно.

    Настройка проекта в NDK для Qt-приложения


    Запустите NDK для BlackBerry и создайте проект «BlackBerry Tablet OS C/C++ Project».
    Создание проекта BlackBerry Tablet OS C/C++ в Native SDK
    Укажите пути к заголовочным файлам модулей, которые будут использоваться. Например, QtGui и QtDeclarative:

    BlackBerry Native SDK: Пути к заголовочным файлам Qt

    Выберите пункт QCC Linker -> Libraries, в список Library Paths добавьте путь к библиотекам Qt и сами библиотеки в список Libraries:

    BlackBerry Native SDK: Пути и библиотеки Qt

    Откройте файл bar-descriptor.xml и в графе Assets добавьте ссылки на модули Qt, которые будет использовать приложение:

    BlackBerry Native SDK: Модули Qt

    В принципе это всё. Теперь можно разрабатывать приложение на Qt или QML, проверять его работу в симуляторе или на PlayBook, создавать подписанные BAR-файлы и размещать их в App World. Пример приложения на QML собранного для PlayBook можно посмотреть тут.

    Ещё одна особенность, которая может сберечь ваше время. Не забудьте вставить первой строчкой в функции main() вашей программы:

        QCoreApplication::addLibraryPath("app/native/lib");

    Так указывается путь по которому приложение будет искать библиотеки Qt.

    Вместо заключения


    Платформа PlayBook представляет большие возможности для разработчиков и, в конечном итоге, для пользователей. В основе платформы лежит ОСРВ QNX, который обеспечивает поддержку POSIX, и средства разработки Native SDK позволяют не только разработать практически что угодно, но и использовать ранее разработанные библиотеки или библиотеки с открытым исходным кодом. В качестве примера может послужить DjView — программа просмотра DjVu, собранная для PlayBook.

    Порт DjView на BlackBerry PlayBook

    В заметке не рассказывалось о всех возможностях и особенностях разработки на Qt для PlayBook. Например, я не рассказал о плагине QNX для Qt Creator, который доступен на GitHub. Также рекомендую попробовать. Сообщают, что плагин будет включён в версию 2.5.

    Если Вам интересны технологии QNX, в том числе и применение Qt на QNX и PlayBook, то не забудьте посетить XII международную конференцию «QNX-Россия 2012». Информация по конференции и материалы с предыдущих конференций доступны на сайте qnx-russia.ru. Получить информацию о докладах специалистов СВД Встраиваемые Системы и предложить темы для докладов и мастер-классов можно на форуме СВД ВС.
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 32
    • 0
      Все же, кому интересно Qt на QNX и Playbook, то советовал бы BB DevCon.
      • 0
        Не совсем ясен смысл Вашего комментария. Уточните, пожалуйста.
        • +1
          Цитата: «Если Вам интересны технологии QNX, в том числе и применение Qt на QNX и PlayBook, то не забудьте посетить XII международную конференцию «QNX-Россия 2012». „

          Смысл моего комментария в том, что посещение BB DevCon будет полезней, чем «QNX-Россия 2012» для разработчиков, которые планируют разрабатывать на Qt под PlayBook.
          • +1
            BB DevCon 2012 уже прошел, так что не имеет смысла о нем говорить сейчас.
            • 0
              В прошлом году, на сколько мне известно, было 2.
              • 0
                Насколько мне известно, это была одна конференция, сначала в Северной Америке, потом в Азии, а затем в Европе. Она была разбита на три мероприятия, которые были разнесены по времени примерно на два месяца.

                Лично я не сравниваю BB DevCon и QNX-Россия. Но на всякий случай, уважаемый klz, Вы были на обоих мероприятиях, чтобы заявлять, что одно из них будет полезней? Или Вы знаете, когда ещё будут проходит международные конференции, на которых будут рассказывать о технологиях QNX? В России?

                На конференции QNX-Россия можно будет пообщаться со специалистами по технологиям QNX, с разработчиками. В том числе будут представители QNX и RIM.
                • 0
                  На BB DevCon — был. Отличное мероприятие. Наверное лучшее из мной посещенных. QNX-Россия — нет, небыл. Но т.к. на сайте нет ни программы, ни списка докладчиков (а осталось меньше 2-х месяцев) — по этому позволил себе сделать такой вывод.

                  С точки зрения просто платформы QNX — посещение, скорее всего, будет полезным. С точки зрения BlackBerry PlayBook и BlackBerry 10 — вряд ли.
                  • +1
                    Не очень понятна логика, по которой вы отрицаете полезность конференции с точки зрения PlayBook и BlackBerry 10. По крайней мере на конференции будет целая секция докладов, посвященная этим вопросам, будут представите РИМ, у них будут доклады и будет стенд. Кстати сказать, на конфереции будут награждены победители конкурса по разработке приложений для PlayBook, который был объявлен компанией РИМ в нескольких ВУЗах.
                    Программа конференции скорее всего на этой неделе будет анонсированна.
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • –1
                      Т.е. вы считаете, что местячковая непрофильная конференция будет полезней чем мировая/региональная профильная? Ну ок.
                      • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        А есть ли там Python и можно ли собрать биндинги с него на Qt?
        • +1
          Python есть, он в QNX всегда был. Думаю, что при желании и биндинги на Qt можно собрать. Лично я собирал биндинг Lua на Qt, правда, не для PlayBook, а для чистого QNX, но сути это не меняет.
        • 0
          QCoreApplication::addLibraryPath(«app/native/lib»);
          это можно сделать и на этапе компиляции для Windows/Unix/Linux, чтоб этот путь был прописан в самом бинарнике. Думаю тут тоже можно.
          • –2
            Самая ужасная и сырая платформа для разработки: ставил на мак натив сдк не пашет симулятор выдает непонятную ошибку на которую не может ответить гугл, ставил на ноут среда вылетает с ексепшеном при старте, ставил на стационар таже фигня (возможна причина в 64-бит оба компа такие).
            Симулятор сделан через жопу его надо запускать через виртуалку( везде как у людей прогал под IOS, WP7 везде все по человечески запускается, а тут бред какой-то), толковых гайдов нет, сама среда разработки очень ужасна, режим теста на симуляторе и нереальное количество настроек просто убивает. Потратил дня 3 на гугление ошибок и лазинье по их форумам, но так и не решил проблему, куча негативных эмоций.
            Мой совет если не ишете кучу гемороя, то не беритесь за эту платформу ей еще ооочень далеко до какого-либо презентабельного вида.
            P.S. Разочаровалсе в ББ очень сильно, понаделали кучу вариантов разработки, если не ошибаюсь их сейчас 4, но самый основной на нативном коде не могут сделать по человечески…
            • 0
              Cуровое мнение о бетта версии Native SDK :-)
              • –1
                Правдивое! Я честно-честно очень хотел писать, там еще акция была на бесплатные плейбуки за приложение, где токо не ставил эту гребаную сдк, но такая ситуация просто выморозила.
                Да-да можете минусовать, можете говорить, что я нуб и опозорился, но с Xcode такой фигни не было, с Visual Studio тоже не было, под IOS я конечно начал прогать токо со стабольного 3 икскода, но вот ВП7 тестил почти после выхода и все было замечательно, так что выводы делайте сами.
                • +2
                  Ну судя по тому, как Вы описали ситуацию, проблема действительно может быть в Вас. Я тоже ставил несколько раз средства разработки в разных ОС. Почему-то не испытывал проблем. Что касается симулятора, то чтобы запустить его надо просто уметь пользоваться VMWare Workstation или Fusion. Что в это может быть сложного?

                  Обратите внимание, что NDK и симулятор это отдельные продукты. Ставятся отдельно.

                  Для платформы PlayBook действительно четыре средства разработки: WebWorks (для тех кто знаком с HTML5 или переходит с BB OS), Adobe AIR (на нём можно разрабатывать для iOS или Android), средства портирования Android приложений и собственно Native SDK. Это не так уж и много.

                  Почему у Вас не получилось с NDK? Ну, наверное, не Ваше…
                  • +2
                    Минусовать не буду, конечно :) Но Вы как-то легко сдаетесь, судя по всему, желаю избавиться от такой привычки ;)
                    • –2
                      Ну не скажите, я испробовал все виды шаманства, которые только знаю, кучи переустановок, удаление антивируса, даже запустил на виртуалке другую ось и в виртуалке поставил еще одну виртуалку для симулятора, пробовал подконеектиться к симулятору, запушенному на стационаре, с мака, на котором работает ИДЕ, но не пашет симулятор, но походу так нельзя. Целью не было освоить эту платформу, а было получить плейбук, но акция кончилась так что я забил. А так осваиваю IOS и там все более благоприятно.
                      Спасибо за пожелание)
                      • +1
                        Кстати, акция заканчивает второго марта. Так что если вы уже зарегистрировались, то у Вас есть все шансы получить приз.
                        • +1
                          Обязательное наличие macosx для разработки — благоприятно? :)
                  • +2
                    Странно. Когда мы готовили курсовой проект, частью которого было приложение под BB PlayBook, у нас особых проблем не возникло. Да, сыровато, но тем не менее проект сдали в срок и защитились на «отлично». Мы, кстати, делали на 64-битной семерке.
                    Политика RIM сейчас направлена на продвижение этого устройства, что не может не радовать судя по вестям с фронтов. Думаю в скором времени и документация хорошая будет, и люди потянутся, ибо устройство (я имею ввиду плейбук) очень вкусное в плане железок и возможностей.
                    Сейчас, кстати, после выхода второй прошивки, в AppWorld'e стало появляться очень много приложений. Правда многие из них- порты с андроида, но тем не менее.
                    • +3
                      возможна причина в 64-бит оба компа такие

                      Нет, у меня замечательно работает и на ноуте с 64-разрядной ОС и на стационарном с 32-разрядной. Вечером в первый раз залез на сайт native sdk — на следующий день имел собранную игру, готовую для отправки в AppWorld, попутно нашел баг в cocos2d-x, сделал пулреквест. Дольше ждал регистрации, чем разбирался с новой платформой :)

                      Напротив, пока приятные впечатления, расширяю функционал blackberry-версии, скоро приведу к общему знаменателю :)
                    • 0
                      И что интересно, всего +11, но 65 в закладках.
                      • 0
                        Сейчас, кстати, пришло письмо о открытии регистрации на QNX-Россия.
                        Кому интересно qnx-russia.ru
                      • 0
                        Большое спасибо за статью! А не подскажете параметры ./configure для сборки под эмулятор (устройства к сожалению нет)?
                        • 0
                          Похоже нашел: wiki.qt-project.org/QNX
                          • 0
                            Точно не помню, думаю, надо заменить:

                               -xplatform unsupported/blackberry-armv7le-qcc -little-endian -arch arm \

                            на

                               -xplatform unsupported/blackberry-x86-qcc -little-endian -arch i386 \

                            Но лучше уточните на форуме.
                            • 0
                              Спасибо, попробовал i386 и x86. Оба выдают:

                              The specified system/compiler is not supported:

                              /home/vitaly/Desktop/qt-qnx/mkspecs/unsupported/qnx-x86-qcc

                              Может что установить забыл?

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