Upload
codefest
View
956
Download
4
Tags:
Embed Size (px)
Citation preview
Серебряная пуля кроссплатформенной разработки
мобильных приложений
Игорь Кашкута@XRazont
Смартфонов много
iOS
Android
Windows Mobile Symbian
iOS
Windows Phone 7
Blackberry
Android
Windows Mobile
Symbian
Bada
Windows Phone 7Blackberry
Meego
Symbian
Смартфонов очень много
iOS
AndroidWindows Mobile Symbian
iOS
Windows Phone 7
Blackberry
Android
Windows Mobile
Symbian
Bada
Windows Phone 7
Blackberry
Meego
Symbian
Symbian
Symbian
Bada
Bada
Windows Phone 7 Windows Phone 7
Android
Android
Symbian
Symbian
Meego
Windows Phone 7
Windows Phone 7
Windows MobileWindows Mobile
Android
Android
SymbianSymbian
iOS
iOS
Blackberry
Blackberry
Windows Mobile
Windows Mobile iOS
iOS
Blackberry
Blackberry
iOS
iOS
iOS
Android
Android
Android
iOS
Смартфонов ужасно много
iOS
AndroidWindows MobileSymbian
iOS
Windows Phone 7
Blackberry
Android
Symbian
Bada
Windows Phone 7
Blackberry
Meego
Symbian
Symbian
Symbian
Bada
Bada
Windows Phone 7Windows Phone 7
Android
Android
Symbian
Symbian
Meego
Windows Phone 7
Windows Phone 7
Windows MobileWindows Mobile
Android
Android
Symbian
Symbian
iOS
iOS
Blackberry
Blackberry
Windows Mobile
Windows Mobile iOS
iOS
Blackberry
Blackberry
iOS
iOS
iOS
Android
Android
Android
iOS
iOS
Android
Windows Mobile
Symbian
iOS
BlackberryAndroidSymbian
Bada
Blackberry
Meego
Symbian
Symbian
Bada
Bada
Windows Phone 7
Android
Android
Symbian
Symbian
Meego
Android
Android
SymbianSymbian
iOS
iOS
Blackberry
Blackberry
iOS
iOS
Blackberry
Blackberry
iOS
iOSiOS
Android
Android
Android
iOS
iOS
Android
Windows Mobile
Symbian
iOS
Android Symbian
Bada
Blackberry
Meego
Symbian
Symbian
Symbian
Bada
Bada
Windows Phone 7
Android
Android
Symbian
Symbian
Meego
Windows Phone 7
Windows Mobile
Windows Mobile
Android
Symbian
iOS
iOS
BlackberryBlac
kber
ry
Windows Mobile
Windows Mobile
iOS
iOS
Blackberry
Blackberry
iOS
iOS
iOS
Android
Android
Android
iOS
Вакуум
Вакуум
ВакуумВакуум
Вакуум
Вакуум
Вакуум
Вакуум
Вакуум
Вакуум
Вакуум
Вакуум
Конь Вакуум
Вакуу
м
1.
Мобильный 2ГИС
Справочник 3D Карта Поиск проезда
Справочник 3D Карта Поиск проезда
Offline!
Мобильный 2ГИС
ПриложениеКарта
Поиск Данные(файл) Обновления
ПозиционированиеФильтры
Сортировки
Проезд
Мобильный 2ГИС
Четыре платформы:
Мобильный 2ГИС
Идея
• Общий код — работает везде
• Нативный код — пишется каждый раз
Qt
• Windows Mobile и Symbian — из коробки• Наши порты на Android и iOS
•Базовый класс объекта•Строки•Контейнеры•Файлы•Потоки
QtCore
Qt
{
•Сокеты•HTTPQtNetwork
Qt
{
QtGui
Qt
{ •Контролы•Пользовательский ввод
QObject1• Signal1(int)• Signal2(QString)• Signal3(QString)
QObject2• Slot1(int)• Slot2(int)• Slot3(QString)
Асинхронно Межпоточно
Слоты и сигналы
Qt и iOS
• Только QtCore• QAbstractEventDispatcher
Qt и iOS
Интеграция с XСode:• QtCore static fat library• Custom Build Step(moc-компиляция)
Сеть
HTTPRequestQtNetwork
NSURLConnectionAndroid, Windows Mobile и Symbian
iOS }
GPS
iOSAndroid
Windows MobileSymbian
LocationService}
Phone
iOSAndroid
Windows MobileSymbian
PhoneDialer}
SMS
iOSAndroid
Windows MobileSymbian
SmsSender}
Browser
iOSAndroid
Windows MobileSymbian
WebOpener}
Интерфейс
QtGuiAndroidSymbian
Windows Mobile
UIKitiOS
Бизнес-логика
UIKitQtGui
80%
20%
Общий код
База данныхСеть
Общий код Нативный код
Точка счастья
Мы
2.
iOS Android WP7Blackberry
Evernote
Evernote Cloud API
Blackberry
Windows Phone 7
iOS
Android
API
Apache Thrift
ServiceC++
Ruby
Python
JavaPHP
C#
Objective-C
Генерирует нативный код
C++std::vector<std::string>
JavaArrayList<String>
Apache Thrift
Evernote Cloud APIBlackberry
Windows Phone 7
iOS
Android Thrift
Thrift API
3.
Списки
Ячейки списков
Аватар
Full Name Username
Прошедшее времяТвит
Three20
• Написан на Objective-C• Огромен и могуч• Слабо документирован• Больше не развивается
И это только одна платформа!
Клиентский веб
iOS Web Android
WebView
Internet/Memory
iOS/Android
Клиентский веб
ПриложениеNative Code
Прямой контроль
• Обновления «на лету»
• Сложно• Теряется нативность поведения
Проблемы
• Та же идея• Поддерживают большинство платформ
Фреймворки
Wikipedia Mobile App
• С/C++
• Генерация кода
• Client Web + Native Bridges
Итог
Вопросы?
Игорь Кашкута@XRazont