codefest 2011. Галин С. — qt для разработки...
TRANSCRIPT
![Page 1: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/1.jpg)
Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android
Сергей Галин,2ГИС
![Page 2: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/2.jpg)
Android 2.x
Symbian S60 / ^3
Windows Mobile 5 / 6
2ГИС
![Page 3: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/3.jpg)
1. Что такое Qt
2. Операционные системы
3. Порт на Android
4. Выводы
План
![Page 4: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/4.jpg)
Что такое Qt? "Write once, compile and run anywhere", или
"Code less, create more and deploy everywhere"
Trolltech (c 1991), Nokia (c 2008)
![Page 5: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/5.jpg)
C++ фреймворк
Переносимость языка
Производительность
Существующий код
![Page 6: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/6.jpg)
Qt - лучше, чем C++!
Свой препроцессор (Meta Object Compiler)
Сигналы и слоты
Свойства (properties)
Рефлексия
![Page 7: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/7.jpg)
Стандартная библиотека
Строки
Контейнеры
Многопоточность
Локализация
Умные указатели: shared, weak, intrusive shared, guarded, scoped; "delete later"
![Page 8: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/8.jpg)
"Почти всеобъемлющий"
QtMobility
Third-party модули
![Page 9: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/9.jpg)
Не-кроссплатформенное?
Уникальные особенности платформ.
Различия стандартов поведения.
Используем условную компиляцию: #ifdef Q_OS_ANDROID...
![Page 10: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/10.jpg)
Средства разработки
qmake
SOURCES = main.cpp mainwindow.cppHEADERS += mainwindow.hFORMS += mainwindow.ui
android { CONFIG += dll TARGET = ../libs/armeabi/qtandroidkeyboarddemo}
![Page 11: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/11.jpg)
Средства разработки (2)
Qt Creator
Eclipse
Visual Studio
GUI Builder
Linguist
![Page 12: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/12.jpg)
Открытый код
Твики сборки
Фиксы
Портирование
![Page 13: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/13.jpg)
![Page 14: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/14.jpg)
Операционные системы Все десктопные
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
![Page 15: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/15.jpg)
QPA (Lighthouse)"A Qt for Embedded Linux without QWS"
![Page 16: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/16.jpg)
Новые платформы
Android
iOS
webOS
![Page 17: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/17.jpg)
Windows Phone 7
![Page 18: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/18.jpg)
![Page 19: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/19.jpg)
Покрытие аудитории изащита инвестиций
ОС:
Уходящие
Маргинальные
Ведущие
Будущие
![Page 20: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/20.jpg)
Порт Qt на Android
Под Андроидом:
Разработка на Java
API в Java
Ограничения NDK и Bionic
![Page 21: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/21.jpg)
Android Lighthouse (Licentia)
![Page 22: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/22.jpg)
Grym Android Lighthouse
![Page 23: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/23.jpg)
Вывод на экран
![Page 24: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/24.jpg)
Отличия нашего порта
Приоритет на выпуск Самостоятельность Стабильность Временные решения Клавиатура QtAndroidCore NDK4 и NDK5 Keepalive service
http://qt.gitorious.org/+grym/qt/grym-android-lighthouse
![Page 25: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/25.jpg)
Necessitas. Интеграция с QtCreator
![Page 26: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/26.jpg)
MinistroУстановщик общих ран-таймов Qt для Android
![Page 27: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/27.jpg)
Ministro (2)
![Page 28: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/28.jpg)
Недостатки Ministro Юзабилити.
Market и интернет на устройстве.
Не даёт выгоду по объёму.
Не кастомизированный Qt.
Не переносится на SD.
Почти бесполезен для 2.3+.
Нет организации.
![Page 29: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/29.jpg)
Что не реализовано Многооконность
Редактирование текстов
OpenGL
Phonon
QtMobility
Стиль UI
![Page 30: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/30.jpg)
Направления развития Интеграция с Necessitas
Многооконность
QtMobility
OpenGL
Phonon
![Page 31: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/31.jpg)
Хотите приступать? Linux
ADK
NDK
QtCreator
Реальные устройства
![Page 32: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/32.jpg)
Отладка
GDB - Android 2.3 + NDK5
Кросс-компиляция
Журнал
Инструментальные функции GCC
http://gitorious.org/android-instrument-function-debug
![Page 33: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/33.jpg)
Выводы
![Page 34: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/34.jpg)
Две ложки дёгтя
1. Размер кода
2. Не-нативность UI
![Page 35: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/35.jpg)
"Против" Qt
Приложения, специфичные для платформы
Маленькие приложения
![Page 36: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/36.jpg)
"За" Qt
Лёгкость разработки
Охват большого количества платформ
Оправдан большой размер приложения
База C++ кода
Кастомный UI
![Page 37: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/37.jpg)
![Page 38: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android](https://reader031.vdocuments.net/reader031/viewer/2022013114/5550125eb4c90535638b4ad5/html5/thumbnails/38.jpg)
Вопросы?
Сергей Галин,2ГИС
E-mail, Jabber: [email protected]: sergey.galinhttp://sergeygalin.moikrug.ru