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

2,841 views

Published on

  • Be the first to comment

  • Be the first to like this

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

  1. 1. Qt для разработки кроссплатформенных мобильных приложений. Порт Qt на Android Сергей Галин, 2ГИС
  2. 2. Android 2.x Symbian S60 / ^3 Windows Mobile 5 / 6 2ГИС
  3. 3. 1. Что такое Qt 2. Операционные системы 3. Порт на Android 4. Выводы План
  4. 4. Что такое Qt? <ul><li>&quot;Write once, compile and run anywhere&quot; , или </li></ul><ul><li>&quot;Code less, create more and deploy everywhere&quot; </li></ul><ul><li>Trolltech (c 1991), Nokia (c 2008) </li></ul>
  5. 5. C++ фреймворк <ul><li>Переносимость языка </li></ul><ul><li>Производительность </li></ul><ul><li>Существующий код </li></ul>
  6. 6. Qt - лучше, чем C++! <ul><li>Свой препроцессор (Meta Object Compiler) </li></ul><ul><li>Сигналы и слоты </li></ul><ul><li>Свойства (properties) </li></ul><ul><li>Рефлексия </li></ul>
  7. 7. Стандартная библиотека <ul><ul><li>Строки </li></ul></ul><ul><ul><li>Контейнеры </li></ul></ul><ul><ul><li>Многопоточность </li></ul></ul><ul><ul><li>Локализация </li></ul></ul><ul><ul><li>Умные указатели: shared, weak, intrusive shared, guarded, scoped; &quot;delete later&quot; </li></ul></ul>
  8. 8. &quot;Почти всеобъемлющий&quot; <ul><li>QtMobility </li></ul><ul><li>Third-party модули </li></ul>
  9. 9. Не-кроссплатформенное? <ul><li>Уникальные особенности платформ. </li></ul><ul><li>Различия стандартов поведения. </li></ul><ul><li>Используем условную компиляцию: #ifdef Q_OS_ANDROID... </li></ul>
  10. 10. Средства разработки <ul><li>qmake </li></ul>SOURCES = main.cpp mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui android { CONFIG += dll TARGET = ../libs/armeabi/qtandroidkeyboarddemo }
  11. 11. Средства разработки (2) <ul><li>Qt Creator </li></ul><ul><li>Eclipse </li></ul><ul><li>Visual Studio </li></ul><ul><li>GUI Builder </li></ul><ul><li>Linguist </li></ul>
  12. 12. Открытый код <ul><li>Твики сборки </li></ul><ul><li>Фиксы </li></ul><ul><li>Портирование </li></ul>
  13. 14. Операционные системы <ul><li>Все десктопные Windows, Mac OS X, Linux, BSD и др. *nix </li></ul><ul><li>Встраиваемые Embedded Linux, PDA, INTEGRITY </li></ul><ul><li>Мобильные Windows CE/Mobile, Symbian S60 & ^3, Maemo/MeeGo </li></ul><ul><li>Внешние порты: OpenSolaris, Haiku, OS/2, Amiga OS4, Amazon Kindle DX </li></ul>
  14. 15. QPA (Lighthouse) &quot;A Qt for Embedded Linux without QWS&quot;
  15. 16. Новые платформы <ul><li>Android </li></ul><ul><li>iOS </li></ul><ul><li>webOS </li></ul>
  16. 17. Windows Phone 7
  17. 19. Покрытие аудитории и защита инвестиций <ul><li>ОС: </li></ul><ul><li>Уходящие </li></ul><ul><li>Маргинальные </li></ul><ul><li>Ведущие </li></ul><ul><li>Будущие </li></ul>
  18. 20. Порт Qt на Android <ul><li>Под Андроидом: </li></ul><ul><li>Разработка на Java </li></ul><ul><li>API в Java </li></ul><ul><li>Ограничения NDK и Bionic </li></ul>
  19. 21. Android Lighthouse (Licentia)
  20. 22. Grym Android Lighthouse
  21. 23. Вывод на экран
  22. 24. Отличия нашего порта <ul><li>Приоритет на выпуск </li></ul><ul><li>Самостоятельность </li></ul><ul><li>Стабильность </li></ul><ul><li>Временные решения </li></ul><ul><li>Клавиатура </li></ul><ul><li>QtAndroidCore </li></ul><ul><li>NDK4 и NDK5 </li></ul><ul><li>Keepalive service </li></ul>http://qt.gitorious.org/+grym/qt/grym-android-lighthouse
  23. 25. Necessitas. Интеграция с QtCreator
  24. 26. Ministro Установщик общих ран-таймов Qt для Android
  25. 27. Ministro (2)
  26. 28. Недостатки Ministro <ul><li>Юзабилити. </li></ul><ul><li>Market и интернет на устройстве. </li></ul><ul><li>Не даёт выгоду по объёму. </li></ul><ul><li>Не кастомизированный Qt. </li></ul><ul><li>Не переносится на SD. </li></ul><ul><li>Почти бесполезен для 2.3+. </li></ul><ul><li>Нет организации. </li></ul>
  27. 29. Что не реализовано <ul><li>Многооконность </li></ul><ul><li>Редактирование текстов </li></ul><ul><li>OpenGL </li></ul><ul><li>Phonon </li></ul><ul><li>QtMobility </li></ul><ul><li>Стиль UI </li></ul>
  28. 30. Направления развития <ul><li>Интеграция с Necessitas </li></ul><ul><li>Многооконность </li></ul><ul><li>QtMobility </li></ul><ul><li>OpenGL </li></ul><ul><li>Phonon </li></ul>
  29. 31. Хотите приступать? <ul><li>Linux </li></ul><ul><li>ADK </li></ul><ul><li>NDK </li></ul><ul><li>QtCreator </li></ul><ul><li>Реальные устройства </li></ul>
  30. 32. Отладка <ul><li>GDB - Android 2.3 + NDK5 </li></ul><ul><li>Кросс-компиляция </li></ul><ul><li>Журнал </li></ul><ul><li>Инструментальные функции GCC </li></ul><ul><li>http://gitorious.org/android-instrument-function-debug </li></ul>
  31. 33. Выводы
  32. 34. Две ложки дёгтя 1. Размер кода 2. Не-нативность UI
  33. 35. &quot;Против&quot; Qt <ul><li>Приложения, специфичные для платформы </li></ul><ul><li>Маленькие приложения </li></ul>
  34. 36. &quot;За&quot; Qt <ul><li>Лёгкость разработки </li></ul><ul><li>Охват большого количества платформ </li></ul><ul><li>Оправдан большой размер приложения </li></ul><ul><li>База C++ кода </li></ul><ul><li>Кастомный UI </li></ul>
  35. 38. Вопросы? Сергей Галин, 2ГИС E-mail, Jabber: sergey.galin@gmail.com Skype: sergey.galin http://sergeygalin.moikrug.ru

×