SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Developing in C++ for Mobile
Igor Kantor
CTO @
С++ in mobile
Our case
• Product: iOS, Android Apps; Backend; Desktop coming
• Communication protocol; API; security; client-server
• A lot of non-trivial code to be duplicated
Android
iOS
Symbian
The whole solution brakes down, because somethings
takes too much time to implement on Android
Why should we re-write the same code
and fix the same bugs 2-3 times?
Goals
1. Less developers, optimize efforts, cost saving
2. Streamline and speed up the development and bugfixing
3. Increase stability and quality of the product
Option 1: cross-platform tools
• PhoneGap
• RhoMobile
• Sencha Touch
• appMobi
• Telerik
• Adobe AIR
• Xamarin
• Appcelerator Titanium
• Corona
• JavaScript
Option2: C++
OK, it’s clear with games. But what about business apps?
Decision
In 2013 we decided to re-design the product architecture and write the
core in C++
OS abstraction layer
Protocol Media
High-level SDK: business login, etc.
iOS
Android
Desktop
JNI
Symbian
C++
More to come
Our results
• Learning curve
• Are we happy? Definitely yes: 70% of code is shared in C++ and
support is much easier
• Streamlined development: we get all the new features
simultaneously
Lesson Learned
• Choose solid and convenient OS abstraction library
• We had to re-write timers routine 3 times!
• Encapsulation and polymorphism
• Understand what should remain native
• Unless 100% sure keep the networking part native
• Get a tool for interface between native language and C++
Recommendations
When to use
Use Don’t use
Long running project/product Short projects, outsourcing
Cost and effort optimization is a
key
Projects are not so complicated
Familiar and ready for C++ and
cross-platform C++ libraries
Don’t have enough C++ expertise
Embrace C++11/14
C++11/14 makes replacing ObjC/Java feasible:
• shared_ptr, unique_ptr
• new containers
• atomics and threading
Define where to put the line
• UI – not a good candidate for C++
• Business logic, Data, Model – perfect candidates
• Define what should remain native: e.g. networking
Choose solid OS abstraction library
• Choose it carefully
• Choose mature only solutions
• It will become your framework to provide you with primitives like
Thread, Timer, File access, etc. etc.
• Options: Qt, Boost, Poco, self-made
Interface
• Define how your Apps will speak to C++ part
• Think this through at the very beginning
• Easy on iOS; relatively easy on Windows (directly or PInvoke)
• JNI – default NDK option for Android. Try to avoid it.
Interface: options
Possible ways to build interfaces:
1. Traditional: 

ObjC ↔ C++ 

Java ↔ JNI ↔ C++
2. Protocol Buffers + ZeroMQ
3. Djinni
4. http://google.github.io/flatbuffers/
Interface: Protocol Buffers + ZeroMQ
Benefits:
1. Your C++ part will act as “local server”
2. Thread safe
3. Language independent interface: don’t
have to define bindings and types for each
platform
Setup build/run process
• Be ready to test your code on Android/iOS which implies in having
both Desktop and Mac
Data layer
• A good candidate for cross-platform C++ implementation
• Many great libraries exists: SQLite, SQLCipher, Realm.io / Poco
• For simple structures use plain SQLite C implementation
Where to start
https://github.com/libmx3/mx3
Start with simple
prototypes just to get the
feeling on timers, threads,
data access, network, etc.
We’re in good company
Thank you
ihor.kantor@gmail.com

Mais conteúdo relacionado

Destaque

Олена Занічковська “Інновації як інструмент продажу на глобальних ринках”
Олена Занічковська “Інновації як інструмент продажу на глобальних ринках”Олена Занічковська “Інновації як інструмент продажу на глобальних ринках”
Олена Занічковська “Інновації як інструмент продажу на глобальних ринках”
Lviv Startup Club
 

Destaque (20)

iCamp 2015. Катерина Пучко “Колл-трекінг в дії: нові можливості для контролю ...
iCamp 2015. Катерина Пучко “Колл-трекінг в дії: нові можливості для контролю ...iCamp 2015. Катерина Пучко “Колл-трекінг в дії: нові можливості для контролю ...
iCamp 2015. Катерина Пучко “Колл-трекінг в дії: нові можливості для контролю ...
 
Lviv MD Day 2015 Малаховський Віталій "Архітектура компонентів обробки даних ...
Lviv MD Day 2015 Малаховський Віталій "Архітектура компонентів обробки даних ...Lviv MD Day 2015 Малаховський Віталій "Архітектура компонентів обробки даних ...
Lviv MD Day 2015 Малаховський Віталій "Архітектура компонентів обробки даних ...
 
iCamp 2015. Юлія Пісаревська “Правила найму віддалених співробітників. Як нал...
iCamp 2015. Юлія Пісаревська “Правила найму віддалених співробітників. Як нал...iCamp 2015. Юлія Пісаревська “Правила найму віддалених співробітників. Як нал...
iCamp 2015. Юлія Пісаревська “Правила найму віддалених співробітників. Як нал...
 
iCamp 2015. Дмитро Кудренко “Трансформації в спілкуванні з клієнтом за допомо...
iCamp 2015. Дмитро Кудренко “Трансформації в спілкуванні з клієнтом за допомо...iCamp 2015. Дмитро Кудренко “Трансформації в спілкуванні з клієнтом за допомо...
iCamp 2015. Дмитро Кудренко “Трансформації в спілкуванні з клієнтом за допомо...
 
iCamp 2015. Олександр Рись “Лояльність та повторний продаж”
iCamp 2015. Олександр Рись “Лояльність та повторний продаж”iCamp 2015. Олександр Рись “Лояльність та повторний продаж”
iCamp 2015. Олександр Рись “Лояльність та повторний продаж”
 
Дмитро Лозовицький "Практичні особливості самовдосконалення PMa"
Дмитро Лозовицький "Практичні особливості самовдосконалення PMa" Дмитро Лозовицький "Практичні особливості самовдосконалення PMa"
Дмитро Лозовицький "Практичні особливості самовдосконалення PMa"
 
iCamp 2015. Дмитро Кудренко “Трансформації в спілкуванні з клієнтом за допомо...
iCamp 2015. Дмитро Кудренко “Трансформації в спілкуванні з клієнтом за допомо...iCamp 2015. Дмитро Кудренко “Трансформації в спілкуванні з клієнтом за допомо...
iCamp 2015. Дмитро Кудренко “Трансформації в спілкуванні з клієнтом за допомо...
 
Руслан Белзюк "Як і навіщо завойовувати симпатію клієнта"
Руслан Белзюк "Як і навіщо завойовувати симпатію клієнта"Руслан Белзюк "Як і навіщо завойовувати симпатію клієнта"
Руслан Белзюк "Як і навіщо завойовувати симпатію клієнта"
 
Lviv MD Day 2015 Іван Лаврів "Mobile development with React Native"
Lviv MD Day 2015 Іван Лаврів "Mobile development with React Native"Lviv MD Day 2015 Іван Лаврів "Mobile development with React Native"
Lviv MD Day 2015 Іван Лаврів "Mobile development with React Native"
 
Lviv Freelance Club Олексій Яновський "Як фрілансеру стати ФОП-ом і працювати...
Lviv Freelance Club Олексій Яновський "Як фрілансеру стати ФОП-ом і працювати...Lviv Freelance Club Олексій Яновський "Як фрілансеру стати ФОП-ом і працювати...
Lviv Freelance Club Олексій Яновський "Як фрілансеру стати ФОП-ом і працювати...
 
Назар Іваненко ”Кар’єра у фрілансі та життя на Марсі”
Назар Іваненко ”Кар’єра у фрілансі та життя на Марсі”Назар Іваненко ”Кар’єра у фрілансі та життя на Марсі”
Назар Іваненко ”Кар’єра у фрілансі та життя на Марсі”
 
PMday 2015. Денис Прилуцький “Project Estimations: What, Why, and How?”
PMday 2015. Денис Прилуцький “Project Estimations: What, Why, and How?”PMday 2015. Денис Прилуцький “Project Estimations: What, Why, and How?”
PMday 2015. Денис Прилуцький “Project Estimations: What, Why, and How?”
 
Віктор Баран "ROMI: стероїди для бізнесу"
Віктор Баран "ROMI: стероїди для бізнесу" Віктор Баран "ROMI: стероїди для бізнесу"
Віктор Баран "ROMI: стероїди для бізнесу"
 
PMday 2015. Любов Самойлова “Post-project/post-mortem report: як перетворити ...
PMday 2015. Любов Самойлова “Post-project/post-mortem report: як перетворити ...PMday 2015. Любов Самойлова “Post-project/post-mortem report: як перетворити ...
PMday 2015. Любов Самойлова “Post-project/post-mortem report: як перетворити ...
 
GameDev 2017 - Богдан Дучак "Договори, без яких розробник як без рук"
GameDev 2017 - Богдан Дучак "Договори, без яких розробник як без рук"GameDev 2017 - Богдан Дучак "Договори, без яких розробник як без рук"
GameDev 2017 - Богдан Дучак "Договори, без яких розробник як без рук"
 
Олена Занічковська “Інновації як інструмент продажу на глобальних ринках”
Олена Занічковська “Інновації як інструмент продажу на глобальних ринках”Олена Занічковська “Інновації як інструмент продажу на глобальних ринках”
Олена Занічковська “Інновації як інструмент продажу на глобальних ринках”
 
КатеринаБожкова “Від Elance-oDesk до Upwork. знайомство з оновленою платформо...
КатеринаБожкова “Від Elance-oDesk до Upwork. знайомство з оновленою платформо...КатеринаБожкова “Від Elance-oDesk до Upwork. знайомство з оновленою платформо...
КатеринаБожкова “Від Elance-oDesk до Upwork. знайомство з оновленою платформо...
 
Тарас Бачинський "Аналіз закону "Про електронну комерцію"
Тарас Бачинський "Аналіз закону "Про електронну комерцію"Тарас Бачинський "Аналіз закону "Про електронну комерцію"
Тарас Бачинський "Аналіз закону "Про електронну комерцію"
 
Едвард Руденко "Мат в 2 хода, або як отримати Клієнта в корпоративному сегмен...
Едвард Руденко "Мат в 2 хода, або як отримати Клієнта в корпоративному сегмен...Едвард Руденко "Мат в 2 хода, або як отримати Клієнта в корпоративному сегмен...
Едвард Руденко "Мат в 2 хода, або як отримати Клієнта в корпоративному сегмен...
 
Максим Зелевський "Як створити успішний проект сидячі у декреті і працюючи ли...
Максим Зелевський "Як створити успішний проект сидячі у декреті і працюючи ли...Максим Зелевський "Як створити успішний проект сидячі у декреті і працюючи ли...
Максим Зелевський "Як створити успішний проект сидячі у декреті і працюючи ли...
 

Semelhante a Lviv MD Day 2015 Ігор Кантор "Розробка додатків зі спільним C++ кодом для iOS i Android"

BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
Ron Munitz
 
Phonegap for Engineers
Phonegap for EngineersPhonegap for Engineers
Phonegap for Engineers
Brian LeRoux
 

Semelhante a Lviv MD Day 2015 Ігор Кантор "Розробка додатків зі спільним C++ кодом для iOS i Android" (20)

Enterprise iPad Development Without Notes
Enterprise iPad Development Without NotesEnterprise iPad Development Without Notes
Enterprise iPad Development Without Notes
 
Introduction of c++ course
Introduction of c++ courseIntroduction of c++ course
Introduction of c++ course
 
Compilation Of C/C++ program in Android
Compilation Of C/C++ program in AndroidCompilation Of C/C++ program in Android
Compilation Of C/C++ program in Android
 
Xamarin v.Now
Xamarin v.NowXamarin v.Now
Xamarin v.Now
 
Programming in c plus plus2
Programming in c plus plus2Programming in c plus plus2
Programming in c plus plus2
 
C++ programming
C++ programmingC++ programming
C++ programming
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
C & C++ Training Centre in Ambala! BATRA COMPUTER CENTRE
C & C++ Training Centre in Ambala! BATRA COMPUTER CENTREC & C++ Training Centre in Ambala! BATRA COMPUTER CENTRE
C & C++ Training Centre in Ambala! BATRA COMPUTER CENTRE
 
Ember Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with EmberEmber Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with Ember
 
miniproject.pptx
miniproject.pptxminiproject.pptx
miniproject.pptx
 
Basics of c++ Programming Language
Basics of c++ Programming LanguageBasics of c++ Programming Language
Basics of c++ Programming Language
 
Enterprise ipad Development with notes
Enterprise ipad Development with notesEnterprise ipad Development with notes
Enterprise ipad Development with notes
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
 
Phonegap for Engineers
Phonegap for EngineersPhonegap for Engineers
Phonegap for Engineers
 
Introduction-to-C-Part-1 (1).doc
Introduction-to-C-Part-1 (1).docIntroduction-to-C-Part-1 (1).doc
Introduction-to-C-Part-1 (1).doc
 
Introduction to Java Part-2
Introduction to Java Part-2Introduction to Java Part-2
Introduction to Java Part-2
 
Dev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar BhattiDev days 1 Introduction to Xamarin Taswar Bhatti
Dev days 1 Introduction to Xamarin Taswar Bhatti
 
C# everywhere
C# everywhereC# everywhere
C# everywhere
 
Ios development
Ios developmentIos development
Ios development
 

Mais de Lviv Startup Club

Mais de Lviv Startup Club (20)

Artem Bykovets: 4 Вершники апокаліпсису робочих стосунків (+антидоти до них) ...
Artem Bykovets: 4 Вершники апокаліпсису робочих стосунків (+антидоти до них) ...Artem Bykovets: 4 Вершники апокаліпсису робочих стосунків (+антидоти до них) ...
Artem Bykovets: 4 Вершники апокаліпсису робочих стосунків (+антидоти до них) ...
 
Dmytro Khudenko: Challenges of implementing task managers in the corporate an...
Dmytro Khudenko: Challenges of implementing task managers in the corporate an...Dmytro Khudenko: Challenges of implementing task managers in the corporate an...
Dmytro Khudenko: Challenges of implementing task managers in the corporate an...
 
Sergii Melnichenko: Лідерство в Agile командах: ТОП-5 основних психологічних ...
Sergii Melnichenko: Лідерство в Agile командах: ТОП-5 основних психологічних ...Sergii Melnichenko: Лідерство в Agile командах: ТОП-5 основних психологічних ...
Sergii Melnichenko: Лідерство в Agile командах: ТОП-5 основних психологічних ...
 
Mariia Rashkevych: Підвищення ефективності розроблення та реалізації освітніх...
Mariia Rashkevych: Підвищення ефективності розроблення та реалізації освітніх...Mariia Rashkevych: Підвищення ефективності розроблення та реалізації освітніх...
Mariia Rashkevych: Підвищення ефективності розроблення та реалізації освітніх...
 
Mykhailo Hryhorash: What can be good in a "bad" project? (UA)
Mykhailo Hryhorash: What can be good in a "bad" project? (UA)Mykhailo Hryhorash: What can be good in a "bad" project? (UA)
Mykhailo Hryhorash: What can be good in a "bad" project? (UA)
 
Oleksii Kyselov: Що заважає ПМу зростати? Розбір практичних кейсів (UA)
Oleksii Kyselov: Що заважає ПМу зростати? Розбір практичних кейсів (UA)Oleksii Kyselov: Що заважає ПМу зростати? Розбір практичних кейсів (UA)
Oleksii Kyselov: Що заважає ПМу зростати? Розбір практичних кейсів (UA)
 
Yaroslav Osolikhin: «Неідеальний» проєктний менеджер: People Management під ч...
Yaroslav Osolikhin: «Неідеальний» проєктний менеджер: People Management під ч...Yaroslav Osolikhin: «Неідеальний» проєктний менеджер: People Management під ч...
Yaroslav Osolikhin: «Неідеальний» проєктний менеджер: People Management під ч...
 
Mariya Yeremenko: Вплив Генеративного ШІ на сучасний світ та на особисту ефек...
Mariya Yeremenko: Вплив Генеративного ШІ на сучасний світ та на особисту ефек...Mariya Yeremenko: Вплив Генеративного ШІ на сучасний світ та на особисту ефек...
Mariya Yeremenko: Вплив Генеративного ШІ на сучасний світ та на особисту ефек...
 
Petro Nikolaiev & Dmytro Kisov: ТОП-5 методів дослідження клієнтів для успіху...
Petro Nikolaiev & Dmytro Kisov: ТОП-5 методів дослідження клієнтів для успіху...Petro Nikolaiev & Dmytro Kisov: ТОП-5 методів дослідження клієнтів для успіху...
Petro Nikolaiev & Dmytro Kisov: ТОП-5 методів дослідження клієнтів для успіху...
 
Maksym Stelmakh : Державні електронні послуги та сервіси: чому бізнесу варто ...
Maksym Stelmakh : Державні електронні послуги та сервіси: чому бізнесу варто ...Maksym Stelmakh : Державні електронні послуги та сервіси: чому бізнесу варто ...
Maksym Stelmakh : Державні електронні послуги та сервіси: чому бізнесу варто ...
 
Alexander Marchenko: Проблеми росту продуктової екосистеми (UA)
Alexander Marchenko: Проблеми росту продуктової екосистеми (UA)Alexander Marchenko: Проблеми росту продуктової екосистеми (UA)
Alexander Marchenko: Проблеми росту продуктової екосистеми (UA)
 
Oleksandr Grytsenko: Save your Job або прокачай скіли до Engineering Manageme...
Oleksandr Grytsenko: Save your Job або прокачай скіли до Engineering Manageme...Oleksandr Grytsenko: Save your Job або прокачай скіли до Engineering Manageme...
Oleksandr Grytsenko: Save your Job або прокачай скіли до Engineering Manageme...
 
Yuliia Pieskova: Фідбек: не лише "як", але й "коли" і "навіщо" (UA)
Yuliia Pieskova: Фідбек: не лише "як", але й "коли" і "навіщо" (UA)Yuliia Pieskova: Фідбек: не лише "як", але й "коли" і "навіщо" (UA)
Yuliia Pieskova: Фідбек: не лише "як", але й "коли" і "навіщо" (UA)
 
Nataliya Kryvonis: Essential soft skills to lead your team (UA)
Nataliya Kryvonis: Essential soft skills to lead your team (UA)Nataliya Kryvonis: Essential soft skills to lead your team (UA)
Nataliya Kryvonis: Essential soft skills to lead your team (UA)
 
Volodymyr Salyha: Stakeholder Alchemy: Transforming Analysis into Meaningful ...
Volodymyr Salyha: Stakeholder Alchemy: Transforming Analysis into Meaningful ...Volodymyr Salyha: Stakeholder Alchemy: Transforming Analysis into Meaningful ...
Volodymyr Salyha: Stakeholder Alchemy: Transforming Analysis into Meaningful ...
 
Anna Chalyuk: 7 інструментів та принципів, які допоможуть зробити вашу команд...
Anna Chalyuk: 7 інструментів та принципів, які допоможуть зробити вашу команд...Anna Chalyuk: 7 інструментів та принципів, які допоможуть зробити вашу команд...
Anna Chalyuk: 7 інструментів та принципів, які допоможуть зробити вашу команд...
 
Oksana Smilka: Цінності, цілі та (де) мотивація (UA)
Oksana Smilka: Цінності, цілі та (де) мотивація (UA)Oksana Smilka: Цінності, цілі та (де) мотивація (UA)
Oksana Smilka: Цінності, цілі та (де) мотивація (UA)
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
 
Andrii Skoromnyi: Чому не працює методика "5 Чому?" – і яка є альтернатива? (UA)
Andrii Skoromnyi: Чому не працює методика "5 Чому?" – і яка є альтернатива? (UA)Andrii Skoromnyi: Чому не працює методика "5 Чому?" – і яка є альтернатива? (UA)
Andrii Skoromnyi: Чому не працює методика "5 Чому?" – і яка є альтернатива? (UA)
 
Maryna Sokyrko & Oleksandr Chugui: Building Product Passion: Developing AI ch...
Maryna Sokyrko & Oleksandr Chugui: Building Product Passion: Developing AI ch...Maryna Sokyrko & Oleksandr Chugui: Building Product Passion: Developing AI ch...
Maryna Sokyrko & Oleksandr Chugui: Building Product Passion: Developing AI ch...
 

Último

Structuring and Writing DRL Mckinsey (1).pdf
Structuring and Writing DRL Mckinsey (1).pdfStructuring and Writing DRL Mckinsey (1).pdf
Structuring and Writing DRL Mckinsey (1).pdf
laloo_007
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
Abortion pills in Kuwait Cytotec pills in Kuwait
 
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecJual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
ZurliaSoop
 
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in OmanMifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
instagramfab782445
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
allensay1
 

Último (20)

Cracking the 'Career Pathing' Slideshare
Cracking the 'Career Pathing' SlideshareCracking the 'Career Pathing' Slideshare
Cracking the 'Career Pathing' Slideshare
 
Arti Languages Pre Seed Teaser Deck 2024.pdf
Arti Languages Pre Seed Teaser Deck 2024.pdfArti Languages Pre Seed Teaser Deck 2024.pdf
Arti Languages Pre Seed Teaser Deck 2024.pdf
 
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdfDr. Admir Softic_ presentation_Green Club_ENG.pdf
Dr. Admir Softic_ presentation_Green Club_ENG.pdf
 
Structuring and Writing DRL Mckinsey (1).pdf
Structuring and Writing DRL Mckinsey (1).pdfStructuring and Writing DRL Mckinsey (1).pdf
Structuring and Writing DRL Mckinsey (1).pdf
 
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NSCROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
 
Lucknow Housewife Escorts by Sexy Bhabhi Service 8250092165
Lucknow Housewife Escorts  by Sexy Bhabhi Service 8250092165Lucknow Housewife Escorts  by Sexy Bhabhi Service 8250092165
Lucknow Housewife Escorts by Sexy Bhabhi Service 8250092165
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Century
 
Falcon Invoice Discounting: Aviate Your Cash Flow Challenges
Falcon Invoice Discounting: Aviate Your Cash Flow ChallengesFalcon Invoice Discounting: Aviate Your Cash Flow Challenges
Falcon Invoice Discounting: Aviate Your Cash Flow Challenges
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptx
 
BeMetals Investor Presentation_May 3, 2024.pdf
BeMetals Investor Presentation_May 3, 2024.pdfBeMetals Investor Presentation_May 3, 2024.pdf
BeMetals Investor Presentation_May 3, 2024.pdf
 
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...
 
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecJual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
 
Getting Real with AI - Columbus DAW - May 2024 - Nick Woo from AlignAI
Getting Real with AI - Columbus DAW - May 2024 - Nick Woo from AlignAIGetting Real with AI - Columbus DAW - May 2024 - Nick Woo from AlignAI
Getting Real with AI - Columbus DAW - May 2024 - Nick Woo from AlignAI
 
Falcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business GrowthFalcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business Growth
 
Rice Manufacturers in India | Shree Krishna Exports
Rice Manufacturers in India | Shree Krishna ExportsRice Manufacturers in India | Shree Krishna Exports
Rice Manufacturers in India | Shree Krishna Exports
 
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in OmanMifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
Mifepristone Available in Muscat +918761049707^^ €€ Buy Abortion Pills in Oman
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
 
Over the Top (OTT) Market Size & Growth Outlook 2024-2030
Over the Top (OTT) Market Size & Growth Outlook 2024-2030Over the Top (OTT) Market Size & Growth Outlook 2024-2030
Over the Top (OTT) Market Size & Growth Outlook 2024-2030
 

Lviv MD Day 2015 Ігор Кантор "Розробка додатків зі спільним C++ кодом для iOS i Android"

  • 1. Developing in C++ for Mobile Igor Kantor CTO @
  • 3. Our case • Product: iOS, Android Apps; Backend; Desktop coming • Communication protocol; API; security; client-server • A lot of non-trivial code to be duplicated Android iOS Symbian The whole solution brakes down, because somethings takes too much time to implement on Android
  • 4. Why should we re-write the same code and fix the same bugs 2-3 times?
  • 5. Goals 1. Less developers, optimize efforts, cost saving 2. Streamline and speed up the development and bugfixing 3. Increase stability and quality of the product
  • 6. Option 1: cross-platform tools • PhoneGap • RhoMobile • Sencha Touch • appMobi • Telerik • Adobe AIR • Xamarin • Appcelerator Titanium • Corona • JavaScript
  • 7. Option2: C++ OK, it’s clear with games. But what about business apps?
  • 8. Decision In 2013 we decided to re-design the product architecture and write the core in C++ OS abstraction layer Protocol Media High-level SDK: business login, etc. iOS Android Desktop JNI Symbian C++ More to come
  • 9.
  • 10. Our results • Learning curve • Are we happy? Definitely yes: 70% of code is shared in C++ and support is much easier • Streamlined development: we get all the new features simultaneously
  • 11. Lesson Learned • Choose solid and convenient OS abstraction library • We had to re-write timers routine 3 times! • Encapsulation and polymorphism • Understand what should remain native • Unless 100% sure keep the networking part native • Get a tool for interface between native language and C++
  • 13. When to use Use Don’t use Long running project/product Short projects, outsourcing Cost and effort optimization is a key Projects are not so complicated Familiar and ready for C++ and cross-platform C++ libraries Don’t have enough C++ expertise
  • 14. Embrace C++11/14 C++11/14 makes replacing ObjC/Java feasible: • shared_ptr, unique_ptr • new containers • atomics and threading
  • 15. Define where to put the line • UI – not a good candidate for C++ • Business logic, Data, Model – perfect candidates • Define what should remain native: e.g. networking
  • 16. Choose solid OS abstraction library • Choose it carefully • Choose mature only solutions • It will become your framework to provide you with primitives like Thread, Timer, File access, etc. etc. • Options: Qt, Boost, Poco, self-made
  • 17. Interface • Define how your Apps will speak to C++ part • Think this through at the very beginning • Easy on iOS; relatively easy on Windows (directly or PInvoke) • JNI – default NDK option for Android. Try to avoid it.
  • 18. Interface: options Possible ways to build interfaces: 1. Traditional: 
 ObjC ↔ C++ 
 Java ↔ JNI ↔ C++ 2. Protocol Buffers + ZeroMQ 3. Djinni 4. http://google.github.io/flatbuffers/
  • 19. Interface: Protocol Buffers + ZeroMQ Benefits: 1. Your C++ part will act as “local server” 2. Thread safe 3. Language independent interface: don’t have to define bindings and types for each platform
  • 20. Setup build/run process • Be ready to test your code on Android/iOS which implies in having both Desktop and Mac
  • 21. Data layer • A good candidate for cross-platform C++ implementation • Many great libraries exists: SQLite, SQLCipher, Realm.io / Poco • For simple structures use plain SQLite C implementation
  • 22. Where to start https://github.com/libmx3/mx3 Start with simple prototypes just to get the feeling on timers, threads, data access, network, etc.
  • 23. We’re in good company