Приложения на Qt для PlayBook

Выбор средств разработки приложений для PlayBook очень богат. Вот лишь некоторые из них: это Java (в Android Player), Native SDK (C/C++), Adobe AIR, Python, Qt, PhoneGap.

Для платформы BlackBerry 10 добавится еще и Cascades  — пакет родных виджетов BlackBerry для Qt Quick (QML).

В состав второй версии Tablet OS (самая свежая на сегодняшний день прошивка для PlayBook) Qt не входит, однако собранные библиотеки можно упаковать вместе с приложением и загрузить на устройство.

Чтобы продемонстрировать возможности NDK в связке с Qt, соберем простейшее приложение ‘Hello, World’ на Qt и запустим его в симуляторе.

Для этого нам понадобится:

  • Linux или OS X
  • VMware Player/VMware Fusion
  • git

Установка NDK и Simulator

Для компиляции и тестирования приложений под PlayBook нам понадобится  BlackBerry native SDK for Tablet OS (NDK) и Tablet OS Simulator.

NDK — это среда разработки (IDE) Momentics, набор инструментальных средств и библиотек для сборки программ на C/C++ для Tablet OS. Поддерживает две архитектуры — симулятор (x86) и BlackBerry PlayBook (arm v7le).

Simulator потребуется для тестирования программ, если у вас нету PlayBook. Simulator — это образ виртуальной машины для VMware Player/Fusion.

Установка Qt

Загружаем исходный код Qt 4.8  из репозитория BlackBerry:

git clone https://github.com/blackberry/Qt.git

В каталоге Qt создаем файл playbook-sim.sh

#!/bin/sh
NDK_PATH=/Developer/SDKs/bbndk-2.0.1
EXTRAOPTS=-xmlpatterns
. ${NDK_PATH}/bbndk-env.sh
./configure-qsk x86
make -j4 install
sudo cp -r stage/nto/ ${NDK_PATH}/target/target-override/

Файл на github
Примечание: отредактируйте переменную NDK_PATH в соответствие с вашей установкой. Для сборки Qt под PlayBook необходимо указать ./configure-qsk arm v7le

Запускаем файл  playbook-sim.sh и ожидаем окончания сборки. Все требуемые файлы скопируются в каталог SDK.

Настраиваем симулятор

Запускаем симулятор в VMware и заходим в настройки Momentics, выбираем пункт BlackBerry Tablet OS. Щелкаем по ссылке BlackBerry Tablet OS Deployment Setup Wizard. Мастер настройки автоматически найдет и подключится к запущенной виртуальной машине с симулятором. Для тестирования приложения в Debug Token не нужен, поэтому шаг настройки ключей мы пропустим.

Создаем проект

Создайте новый проект выбрав New -> BlackBerry Tablet OS C/C++ Project. Язык  проекта — C++, тип проекта — Empty Application.

Откройте файл bar-description.xml, внизу выберите Assets, выберите конфигурацию Simulator Debug

(Все изображения кликабельны)

Добавьте файл ${QNX_TARGET}/../target-override/${CPUVARDIR}/usr/lib/qt4/plugins/platforms/libblackberry.so  (переменные пути и архитектуры подставятся автоматически, вам нужно просто выбрать путь до файла указав File System…)

В столбце Target Path измените lib/libblackberry.so на platforms/libblackberry.so. Путь автоматически изменится на lib/platforms/libblackberry.so (это будет путь до библиотеке в sandbox приложения).

Аналогичным образом добавьте библиотеки libQtCore.so.4, libQtGui.so.4, libQtOpenGL.so.4 из target-override/TARGET/usr/lib/qt4/lib, не изменяя Target Path. Библиотека libQtOpenGL.so.4 нужна для функционирования QtCore, так что даже если вы не используете OpenGL в своей программе, ее все равно требуется добавить.

Настройка сборки

Настроим параметры сборки проекта. Щелкните по имени проекта правой кнопкой, выберите Properties. Далее C++ Build, Settings, Tool Settings, QCC Compiler, Preprocessor.

Добавьте пути до заголовочных файлов :

/Developer/SDKs/bbndk-2.0.1/target/target-override/usr/include/qt4
/Developer/SDKs/bbndk-2.0.1/target/target-override/usr/include/qt4/Qt
/Developer/SDKs/bbndk-2.0.1/target/target-override/usr/include/qt4/QtCore
/Developer/SDKs/bbndk-2.0.1/target/target-override/usr/include/qt4/QtGui

В разделе QCC Linker, Libraries в Library Paths (-L) добавьте локальный путь поиска библиотек  Qt:

/Developer/SDKs/bbndk-2.0.1/target/target-override/x86/usr/lib/qt4/lib

В Libraries (-l) добавьте

QtCore
QtGui
QtOpenGL

Настройка параметров запуска

В меню Run выбирите Run Configurations…, BlackBerry Tablet OS C/C++. Двойным щелчком или кнопкой «+» создайте новую конфигурацию для цели Simulator-Debug. Во вкладке Arguments впишите

-platform blackberry

Пишем Hello, World

Создайте пустой C++ файл с именем «main.cpp» в каталоге src

#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[]) {
    QCoreApplication::addLibraryPath("app/native/lib");
    qputenv("QT_QPA_FONTDIR", "/usr/fonts/font_repository/monotype");

    QApplication app(argc, argv);

    QLabel label("Hello, world!");

    label.show();
    return app.exec();
}

Отличий от десктопного Qt приложения всего два: в строке 5 устанавливаются пути поиска библиотек, которые мы включаем в пакет, а в строке 6 указывается путь поиска шрифтов.

Устанавливаем конфигурацию для сборки по умолчанию в Simulator-Debug

Project -> Build Configurations -> Set Active -> 6 Simulator Debug

Выполняем сборку: в контекстном меню проекта выбираем Build Project

Запуск проекта

Выбираем Run -> Run. Пакетный файл .bar соберется автоматически и загрузится в симулятор

Скриншот запущенного приложения:

В BlackBerry OS 10 будут включены Qt и Cascades — средства для разработки под BlackBerry OS 10 с нативными виджетами.

Cascades основывается на Qt Quick, т.е. разрабатывать приложения под BB 10 можно будет на языке QML.

Конфигурация проекта и исходный код ‘Hello, World’  выложен на github: https://github.com/dalexeyev/ndk2-hello

Ссылки по теме:

Разработка на Qt для PlayBook

Qt for BlackBerry PlayBook

 

  1. Сайт пока в тестовом режиме, если найдёте ошибки — пишите сюда или на форум.

  2. MaxShan