Upload
codefest
View
1.923
Download
10
Embed Size (px)
Citation preview
Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android
Сергей Галин,2ГИС
Android 2.x
Symbian S60 / ^3
Windows Mobile 5 / 6
2ГИС
1. Что такое Qt
2. Операционные системы
3. Порт на Android
4. Выводы
План
Что такое Qt? "Write once, compile and run anywhere", или
"Code less, create more and deploy everywhere"
Trolltech (c 1991), Nokia (c 2008)
C++ фреймворк
Переносимость языка
Производительность
Существующий код
Qt - лучше, чем C++!
Свой препроцессор (Meta Object Compiler)
Сигналы и слоты
Свойства (properties)
Рефлексия
Стандартная библиотека
Строки
Контейнеры
Многопоточность
Локализация
Умные указатели: shared, weak, intrusive shared, guarded, scoped; "delete later"
"Почти всеобъемлющий"
QtMobility
Third-party модули
Не-кроссплатформенное?
Уникальные особенности платформ.
Различия стандартов поведения.
Используем условную компиляцию: #ifdef Q_OS_ANDROID...
Средства разработки
qmake
SOURCES = main.cpp mainwindow.cppHEADERS += mainwindow.hFORMS += mainwindow.ui
android { CONFIG += dll TARGET = ../libs/armeabi/qtandroidkeyboarddemo}
Средства разработки (2)
Qt Creator
Eclipse
Visual Studio
GUI Builder
Linguist
Открытый код
Твики сборки
Фиксы
Портирование
Операционные системы Все десктопные
Windows, Mac OS X, Linux, BSD и др. *nix
ВстраиваемыеEmbedded Linux, PDA, INTEGRITY
МобильныеWindows CE/Mobile, Symbian S60 & ^3, Maemo/MeeGo
Внешние порты: OpenSolaris, Haiku, OS/2, Amiga OS4, Amazon Kindle DX
QPA (Lighthouse)"A Qt for Embedded Linux without QWS"
Новые платформы
Android
iOS
webOS
Windows Phone 7
Покрытие аудитории изащита инвестиций
ОС:
Уходящие
Маргинальные
Ведущие
Будущие
Порт Qt на Android
Под Андроидом:
Разработка на Java
API в Java
Ограничения NDK и Bionic
Android Lighthouse (Licentia)
Grym Android Lighthouse
Вывод на экран
Отличия нашего порта
Приоритет на выпуск Самостоятельность Стабильность Временные решения Клавиатура QtAndroidCore NDK4 и NDK5 Keepalive service
http://qt.gitorious.org/+grym/qt/grym-android-lighthouse
Necessitas. Интеграция с QtCreator
MinistroУстановщик общих ран-таймов Qt для Android
Ministro (2)
Недостатки Ministro Юзабилити.
Market и интернет на устройстве.
Не даёт выгоду по объёму.
Не кастомизированный Qt.
Не переносится на SD.
Почти бесполезен для 2.3+.
Нет организации.
Что не реализовано Многооконность
Редактирование текстов
OpenGL
Phonon
QtMobility
Стиль UI
Направления развития Интеграция с Necessitas
Многооконность
QtMobility
OpenGL
Phonon
Хотите приступать? Linux
ADK
NDK
QtCreator
Реальные устройства
Отладка
GDB - Android 2.3 + NDK5
Кросс-компиляция
Журнал
Инструментальные функции GCC
http://gitorious.org/android-instrument-function-debug
Выводы
Две ложки дёгтя
1. Размер кода
2. Не-нативность UI
"Против" Qt
Приложения, специфичные для платформы
Маленькие приложения
"За" Qt
Лёгкость разработки
Охват большого количества платформ
Оправдан большой размер приложения
База C++ кода
Кастомный UI
Вопросы?
Сергей Галин,2ГИС
E-mail, Jabber: [email protected]: sergey.galinhttp://sergeygalin.moikrug.ru