Как стать автором
Обновить

Nokia Qt SDK, пишем первое приложение и запускаем его в эмуляторе и на устройстве

Время на прочтение9 мин
Количество просмотров17K
Доброго времени суток хабрапользователи. Продолжаю писать о платформе Maemo (пока еще для Maemo Fremantle). Эта статья посвящена новости в мире Nokia — выход Nokia Qt SDK. Пока еще это TP (Technical Preview, долго силил перевод на русский, не получилось, так что пуст будет «TP» далее по тексту). Но писать на этом уже можно, но есть несколько оговорок. Подробности далее по порядку. Еще я расскажу подробней о MADDE, так как именно эта часть в Nokia Qt SDK отвечает за разработку для Maemo.

image

Как результат мы напишем приложение (очень громко сказано :-), вообще так, приложенице ), соберем и запустим его на эмуляторе и на устройстве ( точнее на Nokia N900 ). Да и вообще разберемся что чем и как писать для устройств Nokia сейчас и в будущем.



Первым делом разберемся что к чему. Кто зачем и почему выпустил Nokia Qt SDK.
Так вот Nokia давно готовила этот шаг и вот первый выпуск можно уже опробовать сегодня. И так, встречаем: Nokia Qt SDK.
Официальная информация (там еще две ссылки в этой статье).

Официальное видео(странное вообще).


Теперь резюмирую. Это SDK для разработки под все официально поддерживаемые мобильные платформы с Qt на борту (на данный момент официально поддерживаются Symbian и Maemo 5, что там будет дальше, пока не ясно). Суть в том, что это единый инструмент для разработки мобильных приложений для устройств от Nokia.
Составные части:
  1. Сердцем всего является Qt-Creator.
  2. Под каждую платформу ставится SDK и toolchain для сборки приложения, упаковки и отладки на устройстве.
  3. Qt Simulator — для отладки без наличия устройства.


Звучит вроде здорово. Немного подробностей под каждую из составляющих:
1. Qt Creator:
— специальной сборки
— из коробки настроенная интеграция с целевыми SDK, toolchain'ами и отладчиками.
— встроена поддержка эмулятора
— добавлены шаблоны для мобильных проектов
— очень удивило и порадовало наличие плагина «обновление», который модульно обновляет SDK (сейчас Qt Creator обновляется только полностью, вышла новая версия — качай полностью и ставь рядом или вместо старой). Надеюсь эта «обновлялка» перекочует и в настольную версию Qt SDK
— поддержка технологии Quick/QML.
— поддержка помошника отладчика на python'е (в чем прелесть, можно посмотреть тут , особенно впечатляет последний пример — отладка отрисовки, все это возможно благодаря макросам на питоне в GDB), правда на устройстве еще нет gdb 7.x (обязательное условие для поддержки макросов питоновских), но будет же
— в нем все еще можно писать и десктопные приложения, это нормальный Qt-Creator :-)

2. SDK+toolchain
— для Symbian — это урезанная версия предыдущего SDK (сильно урезанная, так как я сносил окружение для разработки под Symbian, которое у меня стояло, чтоб попробовать — Symbian SDK+ Carbon + Plugins — занимало у меня около 5 гиг на диске). Все что нужно для сборки и отладке на устройстве.
— для Maemo используется MADDE, он сам по себе еще в бета-тестировании, но позвоялет писать приложения не только под Linux'ом, а также под любыми другими платформами. Этим он лучше нынешнего Fremantle SDK (который пока официальный инстурумент для разработки, и еще минимум пол года будет таковым).
— все намного компактней собратьев и радует что есть «обновлялка».

3. Qt Simulator
Достаточно интересная штуковина. По сути я ожидал увидеть действительно эмулятор, но ребята схитрили. Это не совсем эмулятор, это «песочница» с отдельным буфером экрана и поведением как у телефона (заряд, координаты, акселерометр, звонки и тд.). Он не эмулирует телефон, он по факту эмулирует Qt Mobility API (который кстати вышел из бета-тестирования и зарелизился недавно )
Вот что он в себя включает:

  • Service Framework
  • Bearer Management
  • Messaging
  • Contacts
  • Versit
  • Publish and Subscribe
  • Location
  • System Information
  • Sensors

Ну и плюс Multimedia, единственная часть, которая осталась в бета состоянии, но все равно достаточно работоспособна.
Задача эмулятора как раз эмулировать поведение всех вот этих API, и работать они все будут одинаково на всех устройствах с поддержкой Qt Mobility API (я в это верю :-) ). Так что если нужно будет реализовать что-то вне этого API — «нативное», то эмулятор тут не поможет.
Плюс эмулятор поддерживает скриптинг и триггеринг различных системных ситуаций — входящий звонок, садится батарейка и так далее.
Конечно многих это может расстроить, но с другой стороны, более 90% кода при написании мобильного приложения будет использовано именно чистое QT API, все что «вне» прийдется отлаживать на устройстве. Так как Nokia QT SDK — инструмент для кросс-платформенной разработки, то можно предположить, что в эмуляторе можно отлаживать только кросс-платформенный функционал (я верю что такой принцип заложен). С другой стороны эмулятор стал легко переносимый на другие платформы и очень легкий по сравнению с настоящим эмулятором.
Еще одна задача эмулятора — посмотреть как это все будет выглядеть на устройстве (на разных, там в списке есть N95, N97, N900 и призрачный Harmattan (MeeGo) — призрачный потому-что устройства нет, есть только Qt-стиль).
Может это еще заставит разработчика трижды задуматься, прежде чем писать не портируемый код.
Ну в итоге не то что я ожидал, но меня порадовал эмулятор.

Ну вот сжато и сумбурно такое вот описание нового СДК. Теперь плохие новости:
  • SDK только для PR 1.2 прошивки, которой еще нет (надеюсь ждать не долго осталось).
  • Под Linux доступна только разработка для N900 (используя MADDE).
  • Под Mac OS вообще ничего еще нет.


Но так как мы в Вами пока пишем только для N900, то в пролете остаются только пользователи Mac OS (и я в их числе :-) ). Но не расстраивайтесь, MADDE доступно для MAC OS, так что все нормально, просто потребуется немножко больше ручной работы и останемся мы на Mac OS без эмулятора (может как-то можно и его прикрутить, я не пробовал совсем в этом направлении копать, если есть инфа или опыт — пишите).

Таким образом я покажу как установить SDK, написать приложение, собрать его и запустить на эмуляторе. Потом как настроить устройство и запустить на устройстве. Хоть у меня и не получится отладится на устройстве (свалится с SIGFAULT, так как библиотеки на устройстве и в SDK разные), но в скором будущем, когда я обновлю устройство до PR 1.2 это все будет работать (а вообще товарищи производители этих вот библиотек, стыдно должно быть, ибо нужно думать о бинарной совместимости новых версий). Все это под Windows. Под Linux это делается так-же, только сетевой интерфейс настраивается по другому, но я дам ссылку с картинками как это сделать.
А для пользователей Mac OS я покажу как настроить MADDE + Qt Creator чтоб получить такую же связку для разработки. Соберу приложение и запущу его на устройстве (тут оно уже будет работать). Это решение универсальное и будет работать одинаково на всех платформах. Поэтому его можно использовать как альтернативу Nokia Qt SDK, чтоб не тянуть лишнего (например Вам не нежуне ни эмулятор ни Symbian) или чтоб начать отлаживать на устройстве прямо сейчас.

Но обещают официальный релиз к официальному релизу MeeGo, 3-4 квартал 2010, не так долго и ждать осталось.

Ну и сразу официальная ссылка, с кучей информации демок и самим SDK.

1. Nokia Qt SDK на Windows.



Во первых, уточняю, у меня Windows XP SP3 32bit. Я не знаю как это будет работать на других версиях, но если будет различия, то пишите — обсудим. Я даже готов сам разобраться с возможными проблемами на Windows 7 (если они будут), если кто-нибудь подарит мне лицензию :-).
Вот традиционное видео:



Инструкции:
  1. Идем по ссылке forum.nokia.com и там находим секцию от SDK или заходим сразу на страницу SDK.
  2. Скачиваем SDK под нужную платформу — Windows, Offline-версия.
  3. Запускаем установщик.
  4. Принимаем лицензионное соглашение.
  5. Выбираем путь установки и выбираем «настраиваемую» установку.
  6. В списке можете поизучать устанавливаемые компоненты (я убрал исходниые коды от Qt, нужны они только если собираетесь отлаживать само Qt).
  7. Жмем кнопку для установки и ждем пару минут.

Поздравляю!!! SDK установлен и готов к эксплуатации (не правда ли легко, по сравнению с предыдущими статьями).

Далее пишем приложение:
  1. Открываем Qt Creator из состава Nokia Qt SDK. И создаем сессию. Если вы не знаете что это и зачем, то очень советую ознакомиться, ибо без них разработка нескольких проектов превращается в геморрой.
  2. Создаем новый мобильный проект (интеграция с Mobility API).
  3. Создаем формочку с кнопкой.
  4. Делаем приложение. Смысл его в том, что при нажатии на кнопку, текст в строке ввода «переносится» в Label.
  5. Собираем для эмулятора с MinGW 4.4, можете меня спросить почему я запустил сборку до того, как написал год. Все просто, я просто хотел чтоб запустился компилятор .ui файлов и сгенерировал мне соответствующий .h файл, чтоб сработала всплывающая подсказка для написания моего кода (до этого подсказывать не по чем, экземпляра класса ui еще нет).
  6. Запускаем в эмуляторе и немного там играемся.


Настраиваем окружение на устройстве (пункт 2 этой статьи, я вынес отдельно, так как настройка окружения на устройстве одинакова как для Windows Nokia Qt SDK иак и для «чистого» MADDE).

Отлично, теперь будем отлаживать на устройстве по USB (включим воображение и представим, что PR 1.2 уже вышел и я его уже поставил :-) ).
  1. Подключаем N900 в режиме PS Suite по USB.
  2. Заходим в сетевые подключения и ищем интерфейс с названием устройства «Linux USB Ethernet/RND....»
  3. Устанавливаем на этом интерфейсе статический адрес и сеть (во всех примерах это 192.168.2.14/24).
  4. Предполагаю что Вы все настроили уже на устройстве, поэтому пингуем его.(пусть не смущает в видео подсеть 192.168.3.0, я потом перенастроил, так как локальный WiFi у меня был на сети 192.168.2.0).
  5. Настраиваем наше устройство в Qt Creator'е. Выбирается авторизация по паролю, если не хочется каждый раз вводить пароль, то моно обменяться ключами. Для этого достаточно иметь сгенерированные ключи и настроить авторизация по паролю и после этого нажать на кнопку «Deploy Key ...» и указать публичный ключ. Qt Creator подключится по паролю и заберет публичный ключ с устройства, а на устройство положит Ваш публичный ключ. Если же авторизироваться по паролю, то в этой вкладке нужно будет каждый раз вводить пароль, который сгенерировал mad-developer.
  6. Проверям соединение с устройством, нажав на кнопку «Test», должен вывестись список установленных библиотек Qt на устройстве.
  7. На видио пропустил еще один шаг, нуно зайти в «Projects»и посмотреть, чтоб во вкладке «Maemo» был выбран нужный нам рантайм (он у нас один там, называется N900, это то что мы настраивали в предыдущих двух шагах). Если не понятно, подсмотрите в пункте 3, где мы будем настраивать связку Qt Creator+MADDE на Mac OS вручную.
  8. Запускаем и все увы не работает, но непременно заработает, когда устройство прошьется до версии PR 1.2.


2. Настройка окружения на телефоне.


Съемка телефона мне дается очень сложно, в данном случае было сложнее, так как подставку я зыбал в Москве и пришлось городить стационарную систему съемок из подручный материалов. Не обращайте внимание на мои трясущиеся руки со стилусом — это не от страха, а от неудобности :-)

А теперь к делу, все что нам нужно — это поставить и освоить пакет mad-developer из «extras» репозитория.

  1. Заходим в Диспечер приложений. Нажимаем «загрузить» и заходим в каталог «разработка».
  2. Ищем пакет mad-developer и ставим его (если его нет в списке, проверьте, может он уже стоит и проверьте подключен ли у Вас репозиторий extras).
  3. Запускаем mad-developer.
  4. Настраиваем сетевой интерфейс USB (вводим статический аддресии — в моем случае 192.168.3.15, так как вторая подсетка уже занята).
  5. При разработке из-под Windows необходимо вручную загрузить USB модуль g_ether, на Mac OS и Linux это не нужно, у Вас сетевые интерфейсы поднимутся и так.
  6. Доступна консоль разработчика (зачем она, не совсем понятно).
  7. Самое главное — это кнопка генерации пароля, пока пароль видно на экране — он действителен, как только нажмете кнопку «close» — подключиться к устройству по паролю вы уже не сможете.

Рабочее состояние приложения такое — открываете mad-developer и открываете окно с паролем, запускаете Qt Creator и заходите во вкладку настройки Maemo устройства и вводите этот пароль. После этого можно отлаживаться на устройстве. Если обменяться ключами как указано в предыдущей главе, то этого всего не нужно.

3. Настрйка связки Qt Creator + MADDE на Mac OS.


По большому счету, если Вам не нужен эмулятор, то даже на Windows и автообновление SDK, то можно воспользоваться этим путем вместо SDK. По сути для Maemo разработки Nokia Qt SDK и MADDE не просто синонимы, а одно и то-же. Так что если не собираетесь писать под Symbian и не нужен эмулятор, то советую использовать чистый MADDE в целях экономии места.

Тем не менее, на текущий момент Nokia Qt SDK нет для Mac OS, именно поэтому я и решил продемонстрировать установку MADDE+QtCreator.
Вот видео:


Плюс видео как добавить Madde'шный qmake в Qt-Creator(забыл включить в первое видео):


Тут все просто.
  1. Скачиваем MADDE скрипт-установщик и запускаем его.
  2. Скачиваем и ставим последний Qt Creator (либо последний «снимок» отсюда либо качаем последний официальный релиз 2.0 beta отсюда (там внизу страницы ссылки на сборки для разных ОС)).
  3. Настраиваем mad-developer на N900 (предыдущая глава).
  4. Настраиваем Qt-creator, добавляем Qt из MADDE пакета.
  5. Настраиваем среду запуска на устройстве.
  6. Пишем собственно приложение.
  7. Запускаем и отлаживаем его на компьютере.
  8. Запускаем и отлаживаем его на устройстве.


Хоть все и просто, но есть пару нюансов.
  • В qmake.conf в MADDE не прописан флаг "-g" для gcc, при сборке приложения в режиме отладки. Поэтому в файл .pro нужно добавить такую вот строчку:
  • QMAKE_CXXFLAGS_DEBUG+=-g
  • эта переманная — флаги для gcc, при сборке в режиме отладки.
  • Нужно «вручную» добавить qmake, который нужен для сборки приложения для запуска на устройстве.
  • Необходимо пересобрать (помощник отладчика).


4. Отладка, live video.


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



Заключение.



В итоге могу сказать Bravo!, компании Nokia. Все сделано очень дельно и хорошо, даже учитывая, что это beta, все равно разрабатывать приложения даже для коммерческого проекта можно.
Процесс установки и настройки очень простой. Разработка для мобильный и настольных приложений ведется одними инструментами. Qt Mobility API принес возможность абстрагироваться от уровня мобильной ОС до уровня «коммуникатор».
Статья я надеюсь скоро устареет, но принципы заложенные в бета версию продуктов не должны изменится. По сути нужно будет делать то-же самое, только в файлах-установщиках будут другие версии.

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

Всем удачного коддинга/хаккинга.

UPD: баги конечно есть, это первый официальный выпуск (хоть и бета). Так что те кому это интересно и кто нашел ошибки, имеет вопросы или просто хочет узнать больше вот необходимые ссылки:
Официальная WiKi страничка.
Официальная страница проекта.
Руководство по «быстрому старту».
Форум, посвященный инструментам, входящим в состав этоко SDK.

Ну и конечно Qt bug-tracker.
Теги:
Хабы:
+52
Комментарии24

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн