38
Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android Сергей Галин, 2ГИС

CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

  • Upload
    codefest

  • View
    1.923

  • Download
    10

Embed Size (px)

Citation preview

Page 1: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Сергей Галин,2ГИС

Page 2: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Android 2.x

Symbian S60 / ^3

Windows Mobile 5 / 6

2ГИС

Page 3: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

1. Что такое Qt

2. Операционные системы

3. Порт на Android

4. Выводы

План

Page 4: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Что такое 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

C++ фреймворк

Переносимость языка

Производительность

Существующий код

Page 6: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Qt - лучше, чем C++!

Свой препроцессор (Meta Object Compiler)

Сигналы и слоты

Свойства (properties)

Рефлексия

Page 7: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Стандартная библиотека

Строки

Контейнеры

Многопоточность

Локализация

Умные указатели: shared, weak, intrusive shared, guarded, scoped; "delete later"

Page 8: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

"Почти всеобъемлющий"

QtMobility

Third-party модули

Page 9: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Не-кроссплатформенное?

Уникальные особенности платформ.

Различия стандартов поведения.

Используем условную компиляцию: #ifdef Q_OS_ANDROID...

Page 10: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Средства разработки

qmake

SOURCES = main.cpp mainwindow.cppHEADERS += mainwindow.hFORMS += mainwindow.ui

android { CONFIG += dll TARGET = ../libs/armeabi/qtandroidkeyboarddemo}

Page 11: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Средства разработки (2)

Qt Creator

Eclipse

Visual Studio

GUI Builder

Linguist

Page 12: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Открытый код

Твики сборки

Фиксы

Портирование

Page 13: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android
Page 14: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Операционные системы Все десктопные

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

QPA (Lighthouse)"A Qt for Embedded Linux without QWS"

Page 16: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Новые платформы

Android

iOS

webOS

Page 17: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Windows Phone 7

Page 18: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android
Page 19: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Покрытие аудитории изащита инвестиций

ОС:

Уходящие

Маргинальные

Ведущие

Будущие

Page 20: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Порт Qt на Android

Под Андроидом:

Разработка на Java

API в Java

Ограничения NDK и Bionic

Page 21: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Android Lighthouse (Licentia)

Page 22: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Grym Android Lighthouse

Page 23: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Вывод на экран

Page 24: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Отличия нашего порта

Приоритет на выпуск Самостоятельность Стабильность Временные решения Клавиатура QtAndroidCore NDK4 и NDK5 Keepalive service

http://qt.gitorious.org/+grym/qt/grym-android-lighthouse

Page 25: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Necessitas. Интеграция с QtCreator

Page 26: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

MinistroУстановщик общих ран-таймов Qt для Android

Page 27: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Ministro (2)

Page 28: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Недостатки Ministro Юзабилити.

Market и интернет на устройстве.

Не даёт выгоду по объёму.

Не кастомизированный Qt.

Не переносится на SD.

Почти бесполезен для 2.3+.

Нет организации.

Page 29: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Что не реализовано Многооконность

Редактирование текстов

OpenGL

Phonon

QtMobility

Стиль UI

Page 30: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Направления развития Интеграция с Necessitas

Многооконность

QtMobility

OpenGL

Phonon

Page 31: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Хотите приступать? Linux

ADK

NDK

QtCreator

Реальные устройства

Page 32: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Отладка

GDB - Android 2.3 + NDK5

Кросс-компиляция

Журнал

Инструментальные функции GCC

http://gitorious.org/android-instrument-function-debug

Page 33: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Выводы

Page 34: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Две ложки дёгтя

1. Размер кода

2. Не-нативность UI

Page 35: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

"Против" Qt

Приложения, специфичные для платформы

Маленькие приложения

Page 36: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

"За" Qt

Лёгкость разработки

Охват большого количества платформ

Оправдан большой размер приложения

База C++ кода

Кастомный UI

Page 37: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android
Page 38: CodeFest 2011. Галин С. — Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android

Вопросы?

Сергей Галин,2ГИС

E-mail, Jabber: [email protected]: sergey.galinhttp://sergeygalin.moikrug.ru