CodeFest 2011. Галин С. — Qt для разработки...

Post on 11-May-2015

1.933 views 10 download

Transcript of CodeFest 2011. Галин С. — Qt для разработки...

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: sergey.galin@gmail.comSkype: sergey.galinhttp://sergeygalin.moikrug.ru