CodeFest 2012. Кашкута И. — Серебряная пуля...

45
Серебряная пуля кроссплатформенной разработки мобильных приложений Игорь Кашкута @XRazont

Transcript of CodeFest 2012. Кашкута И. — Серебряная пуля...

Page 1: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Серебряная пуля кроссплатформенной разработки

мобильных приложений

Игорь Кашкута@XRazont

Page 2: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Смартфонов много

iOS

Android

Windows Mobile Symbian

iOS

Windows Phone 7

Blackberry

Android

Windows Mobile

Symbian

Bada

Windows Phone 7Blackberry

Meego

Symbian

Page 3: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Смартфонов очень много

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

Page 4: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Смартфонов ужасно много

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

Page 5: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Вакуум

Вакуум

ВакуумВакуум

Вакуум

Вакуум

Вакуум

Вакуум

Вакуум

Вакуум

Вакуум

Вакуум

Конь Вакуум

Вакуу

м

Page 6: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

1.

Page 7: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Мобильный 2ГИС

Справочник 3D Карта Поиск проезда

Page 8: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Справочник 3D Карта Поиск проезда

Offline!

Мобильный 2ГИС

Page 9: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

ПриложениеКарта

Поиск Данные(файл) Обновления

ПозиционированиеФильтры

Сортировки

Проезд

Мобильный 2ГИС

Page 10: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Четыре платформы:

Мобильный 2ГИС

Page 11: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Идея

• Общий код — работает везде

• Нативный код — пишется каждый раз

Page 12: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Qt

• Windows Mobile и Symbian — из коробки• Наши порты на Android и iOS

Page 13: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

•Базовый класс объекта•Строки•Контейнеры•Файлы•Потоки

QtCore

Qt

{

Page 14: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

•Сокеты•HTTPQtNetwork

Qt

{

Page 15: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

QtGui

Qt

{ •Контролы•Пользовательский ввод

Page 16: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

QObject1• Signal1(int)• Signal2(QString)• Signal3(QString)

QObject2• Slot1(int)• Slot2(int)• Slot3(QString)

Асинхронно Межпоточно

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

Page 17: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Qt и iOS

• Только QtCore• QAbstractEventDispatcher

Page 18: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Qt и iOS

Интеграция с XСode:• QtCore static fat library• Custom Build Step(moc-компиляция)

Page 19: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Сеть

HTTPRequestQtNetwork

NSURLConnectionAndroid, Windows Mobile и Symbian

iOS }

Page 20: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

GPS

iOSAndroid

Windows MobileSymbian

LocationService}

Page 21: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Phone

iOSAndroid

Windows MobileSymbian

PhoneDialer}

Page 22: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

SMS

iOSAndroid

Windows MobileSymbian

SmsSender}

Page 23: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Browser

iOSAndroid

Windows MobileSymbian

WebOpener}

Page 24: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Интерфейс

QtGuiAndroidSymbian

Windows Mobile

UIKitiOS

Page 25: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Бизнес-логика

UIKitQtGui

80%

20%

Общий код

База данныхСеть

Page 26: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Общий код Нативный код

Точка счастья

Мы

Page 27: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

2.

Page 28: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

iOS Android WP7Blackberry

Evernote

Page 29: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Evernote Cloud API

Blackberry

Windows Phone 7

iOS

Android

API

Page 30: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Apache Thrift

ServiceC++

Ruby

Python

JavaPHP

C#

Objective-C

Page 31: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Генерирует нативный код

C++std::vector<std::string>

JavaArrayList<String>

Apache Thrift

Page 32: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Evernote Cloud APIBlackberry

Windows Phone 7

iOS

Android Thrift

Thrift API

Page 33: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

3.

Page 34: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Списки

Page 35: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Ячейки списков

Аватар

Full Name Username

Прошедшее времяТвит

Page 36: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Three20

• Написан на Objective-C• Огромен и могуч• Слабо документирован• Больше не развивается

Page 37: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

И это только одна платформа!

Page 38: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Клиентский веб

iOS Web Android

Page 39: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

WebView

Internet/Memory

iOS/Android

Клиентский веб

ПриложениеNative Code

Page 40: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Прямой контроль

• Обновления «на лету»

Page 41: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

• Сложно• Теряется нативность поведения

Проблемы

Page 42: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

• Та же идея• Поддерживают большинство платформ

Фреймворки

Page 43: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Wikipedia Mobile App

Page 44: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

• С/C++

• Генерация кода

• Client Web + Native Bridges

Итог

Page 45: CodeFest 2012. Кашкута И. — Серебряная пуля кроссплатформенной разработки мобильных приложений

Вопросы?

Игорь Кашкута@XRazont