2010-06-23

Android-lighthouse: вызов Java-методов из C++/Qt-кода

По адресу http://qt.gitorious.org/~taipan/qt/android-lighthouse лежит репозитарий с Qt для Android'а. Проект более менее активно пилится его создателем и на данный момент его вполне уже можно использовать. Однако, там не хватает такой вещи как вызов Java-методов из кода, написанного на C++/Qt. В частности, это очень нужно для работы с GPS. Но. Никто не мешает нам слегка поправить проект и впилить туда нужный нам функционал. Этим и займемся.
Внимание! Все исходники основаны на версии репозитария на момент 23 июня (последний push на текущий момент сделан 14 июня).

Краткий экскурс: JNI
JNI - это коннектор между нативным кодом и кодом на Java. В настоящее время проект заброшен и не поддерживается, несмотря на большое количество багов в нем. Тем не менее, этот коннектор позволяет без проблем обращаться к ява-машине из нативного кода, пусть и делать это приходится очень аккуратно.

Постановка задачи
Работа с андроидом накладывает несколько ограничений:
  1. Мы не можем создать еще одну ява-машину, нам надо работать в той же (на процесс разрешена только одна ява-машина)
  2. ClassLoader для ява-машины в андроиде кастомизирован и не позволяет искать свои классы (системные ищутся и находятся на ура) из любого места отличного от функции OnLoad(). 
Первое ограничение нас, в принципе, особо не интересует, так как нам все равно нужны инстанции тех же объектов, которые были в нашем Java-приложении, а значит нужна именно та ява-машина.
Второе ограничение похуже и по сути не дает нам просто найти интересующие нас классы из нашего Qt-приложения и работать с ними. Опять же, делать поиск в OnLoad() и позже использовать найденные классы не получится, так как OnLoad() находится в lighthouse и кастомизировать его под каждое приложение не очень хорошо.
Следовательно, нам нужно:
  1. Найти общее решение для вызова своих Java-методов
  2. Реализовать его 

Qt в Ovi Store и кучка релизов

Итак, сегодня переломный день. С сегодняшнего дня разрешено выкладывать в Ovi Store приложения на основе Qt. Но обо всем по порядку.

Qt Creator 2.0
Вышел новый релиз IDE для Qt. К сожалению, в нем отключен Declarative (из-за задержки с Qt 4.7), но это позволило пользователям 4.6 насладиться фунционалом, добавленным после 1.3. А это такие вещи, как улучшенный рефакторинг, измененные настройки, улучшенный парсер pro-файлов и прочее. Всего между 1.3 и 2.0 было около 5000 коммитов. Сам я правда ожидаю появления в git снепшотов 2.1 (обещали к концу этой недели), в котором вернут обратно поддержку Declarative. Сам Creator 2.1 выйдет вместе с Qt 4.7.

Nokia Qt SDK 1.0
Также вышла первая релизная версия SDK для разработок под мобильные платформы Symbian и Maemo. Вышли в релиз версии для Windows и Linux, а для Mac OS X 10.6 пока что есть только бета-версия.
В релиз вошли:
  • Qt Creator 2.0
  • Qt Simulator 1.0
  • Qt Mobility
  • текущая версия MADDE
  • пакеты для Symbian
  • Smartinstaller для Symbian
  • экспериментальная версия Remotecompiler
  • документация ко всем компонентам

Qt Mobility 1.0.1
В довесок еще вышел небольшой релиз Mobility, который добавляет QtMultimediaKit.

Выход Qt на Ovi Store
И самая главная новость дня. В Ovi Store теперь можно заливать приложения, использующие Qt (пока что для N900, X6, N97 mini, но в дальнейшем список будет расширяться). Кроме того, теперь для регистрации в Ovi не надо быть частью какой-то организации, регистрация разрешена частным лицам. Ну и видимо чтобы добить тех, кто еще не упал в обморок от того что написано выше Nokia запустила бета-режим подписывания приложений для Symbian, который мало того что сокращает станадртный период подписывания вдвое, так еще и делает подпись бесплатной.

2010-06-11

Qt DeveloperNetwork - объединяем все

Некоторое время назад (а если быть точнее, то 21 мая) я получил доступ на закрытое бета-тестирование сайта http://developer.qt.nokia.com.

Что это?
Этот сайт по сути является попыткой объединить все, что нужно разработчику на Qt. Здесь и форум, и вики, и ссылки на саму библиотеку и дополнения к ней. На данный момент все находится в начальной стадии и многое еще не добавлено или добавлено, но с ошибками :)

Состояние на текущий момент
Сейчас на сайте практически ничего нет, кроме обширного форума о найденных багах и предложенных фичах. Медленно, но верно конечно заполняется и остальной форум и вики. Пока что сайт в самом начале своего пути.

А зачем это нужно, если есть QtCentre, ProgOrgRu, другие сайты на данную тематику?
И ведь действительно зачем? Сейчас есть большое количество различных форумов, блогов и просто сайтов, посвященных разработке на Qt, использованию Qt и просто Qt. Есть даже раздел на Форумах Nokia. 
По сути это не просто очередной сайт о Qt. Это попытка сделать единую стартовую точку для поиска информации и общения с другими разработчиками на Qt. Некое место, куда можно будет зайти и начать путь в поисках какого-то недостающего кусочка паззла вашего кода. 
Также этот сайт на текущий момент не является чем-то застывшим по функционалу, он активно развивается и учитываются пожелания бета-тестеров. То есть, со временем это будет действительно местом, с которого начинается день каждого qt-разработчика. 
Ну и сейчас это место, где активно сидят тролли (не те, которые на луркморье, а бывшие Trolltech). Кроме пожеланий по самому сайту они видят и вопросы и фичреквесты по самой библиотеке и инфраструктуре (например сегодня был поднят вопрос о документации).

А как туда попасть?
Бета-тестирование закрытое, но оставить заявку может любой желающий. Для этого достаточно пройти по ссылке http://qt.nokia.com/qtdn-signup и отметиться там. Со временем, возможно придет инвайт (или просто снимут статус бета-тестирования).

UPD (2010-07-08). Open beta
С 8 июля регистрация открыта для всех желающих.

О чем этот блог

Итак, это первое сообщение в этом блоге. Здесь я немного расскажу о том что в нем будет и о себе.

О блоге
Посты будут в основном о разработке с использованием C++/Qt. Иногда просто о Qt, иногда просто о C++, иногда вообще не о разработке, а просто об интересных вещах в мире Qt и около него. Посты будут нерегулярные и скорее всего редкие.
Время блога московское, язык постов русский (хотя со временем может появятся и на английском).

Обо мне
Разработчик на C++/Qt, также умею веб на php и java/gwt. В качестве платформы предпочитаю использовать Linux, но в разработке в основном кросс-платформенные проекты.