SlideShare a Scribd company logo
1 of 45
Серебряная пуля
кроссплатформенной разработки
    мобильных приложений


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


                   Blackberry              Android          Windows Phone 7

Windows Mobile                    iOS                Symbian



                   Смартфонов много
iOS
                                                                    Symbian
                                        Windows Phone 7
      Blackberry       Symbian
                                                          Android
                                Bada
                                                                              Meego
Windows Mobile               iOS       iOS
                      Symbian              iOS
                                                                    Android
                                                                                 Symbian
                                 Symbian
                                                                Windows Phone 7
Meego    Symbian           iOS                                          Bada
                                 iOS                   Symbian
  Windows Mobile
                                                   Android          Windows Phone 7

          Смартфонов очень много
   iOS      Windows Mobile
                                       iOS                                           Android
                                                                  iOS      Symbian
iOS                                                                              Blackberry
                                        Android                  Android
  Windows Mobile                                              Android
                                                                                 iOS
                      Symbian

              Blackberry     Bada                Blackberry              Android
                                                                                     Meego
                           Blackberry
                                           Windows Phone 7
Windows Phone 7                                       Blackberry
                              iOS
                                                                                   iOS        iOS
                                                                  Symbian    iOS         Android          Symbian
                               Symbian                iOS
                                                                                         Android                  iOS
                                            Symbian
                                               iOS            iOS
                                                                                  Windows Phone 7
   Meego        Symbian               iOS             Bada                                              iOS      Meego
                                                                                   iOS    Bada
  iOS     Windows Mobile
                                                            iOS                          Symbian
                      iOS   Symbian                               Android Bada       Windows Phone 7
Symbian
                                                                                                 iOS
                Смартфонов ужасно много                                                                        Meego
                Android       iOS
          iOS                           iOS                  Symbian
                                                                                                       Android
                    Windows Mobile                                                 iOS        Symbian
   iOS                                                                                              Blackberry
                                                                                                               iOS
                                            Android
                                                      Android               iOS Android iOS             Blackberry
                                                                             Android Android
                                                                                                    iOS
          Windows Mobile Symbian Symbian
                                                           Android
            Bada                  Bada          Blackberry        Android
                      Blackberry          Android iOS
                                Symbian                                                                       Meego
                 Bada                       Windows Phone 7
                                 Blackberry                                                                      iOS
                                     Symbian Blackberry       Android
Конь
1.
Мобильный 2ГИС




Справочник   3D Карта   Поиск проезда
Мобильный 2ГИС




Справочник   3D Карта   Поиск проезда
Мобильный 2ГИС


   Приложение
Мобильный 2ГИС
 Четыре платформы:
Идея

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

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

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

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

            •Сокеты
QtNetwork   •HTTP
Qt

        •Контролы
QtGui   •Пользовательский ввод
Слоты и сигналы
QObject1              QObject2
• Signal1(int)        • Slot1(int)
• Signal2(QString)    • Slot2(int)
• Signal3(QString)    • Slot3(QString)



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

• Только QtCore
• QAbstractEventDispatcher
Qt и iOS

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

QtNetwork
Android, Windows Mobile и Symbian
                                    HTTPRequest
NSURLConnection
iOS
GPS
           iOS
       Android
Windows Mobile
                 LocationService
      Symbian
Phone
           iOS
       Android
Windows Mobile
                  PhoneDialer
      Symbian
SMS
           iOS
       Android
Windows Mobile
                  SmsSender
      Symbian
Browser
           iOS
       Android
Windows Mobile
                   WebOpener
      Symbian
Интерфейс

  QtGui          UIKit
   Android        iOS
   Symbian
Windows Mobile
QtGui      UIKit       20%


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


 Сеть    База данных
Точка счастья
Общий код                   Нативный код



                Мы
2.
Evernote
iOS   Android   Blackberry   WP7
API
    Android

      iOS
                        Evernote Cloud API
Windows Phone 7

   Blackberry
Apache Thrift
             Service
C++
                            Python

Java                 C#
       PHP
                          Objective-C
              Ruby
Apache Thrift
          Генерирует нативный код

          C++                    Java
std::vector<std::string>   ArrayList<String>
Thrift API
  Android
                       Thrift
     iOS
Windows Phone 7


Blackberry               Evernote Cloud API
3.
Списки
Ячейки списков
         Full Name          Username




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

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




iOS     Web    Android
Клиентский веб
    Приложение


  WebView


     iOS/Android
Прямой контроль


• Обновления «на лету»
Проблемы

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



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

• С/C++

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

• Client Web + Native Bridges
Вопросы?

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

More Related Content

More from CodeFest

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита ПрокоповCodeFest
 
Денис Баталов
Денис БаталовДенис Баталов
Денис БаталовCodeFest
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена ГальцинаCodeFest
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр КалашниковCodeFest
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина ИвановаCodeFest
 
Marko Berković
Marko BerkovićMarko Berković
Marko BerkovićCodeFest
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис КортуновCodeFest
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр ЗиминCodeFest
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей ИгнатовCodeFest
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай КрапивныйCodeFest
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим СмирновCodeFest
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene GroeschkeCodeFest
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван БондаренкоCodeFest
 
Mete Atamel
Mete AtamelMete Atamel
Mete AtamelCodeFest
 

More from CodeFest (20)

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита Прокопов
 
Денис Баталов
Денис БаталовДенис Баталов
Денис Баталов
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена Гальцина
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр Калашников
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина Иванова
 
Marko Berković
Marko BerkovićMarko Berković
Marko Berković
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис Кортунов
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр Зимин
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей Игнатов
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим Смирнов
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван Бондаренко
 
Mete Atamel
Mete AtamelMete Atamel
Mete Atamel
 

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