SlideShare a Scribd company logo
1 of 17
Download to read offline
Кроссплатформенная библиотека
для Android и iOS: за и против
Коршунов Михаил
https://vk.com/mkorshunov
11-я конференция .NET разработчиков
31 октября 2015
dotnetconf.ru
2
Задачи
• обеспечить пользователям навигацию в
помещении
• сбор местоположений пользователей
для анализа
• реализовать триггеры, срабатывающие
при входе пользователя в зону
(GeoFencing)
3
Как это работает
координаты маячков iBeacon
координаты пользователя
iBeacon iBeacon
iBeacon
клиент
сервер
4
Требования к ядру
1. Загрузка координат маячков и зон,
хранение их в БД
2. Расчет пользовательского
местоположения и проверка вхождения
в зоны
3. Рассылка пользовательской локации по
приложению
4. Отправка пользовательской локации на
сервер
5
Почему crossplatform?
• исключает расхождение алгоритмов
• облегчает дальнейшую поддержку
• экономит время на разработку
6
Варианты кроссплатформенной
реализации
• HRML5, PhoneGap, Xamarin, Adobe Air и
т.д.
• портирование кода с одной платформы на
другую (J2ObjC, ObjC2J и т.д.) или
портирование кода с промежуточного
языка на ObjectiveC и Java
• Djinni от Dropbox
• использование нативной
кроссплатформенной C++ библиотеки
7
Преимущества C++ библиотеки
• нативные приложения
• исключены ошибки, связанные с
портированием
• возможность использования внешних C+
+ библиотек (Curl, MySQL и т.д.)
8
Архитектура
Что получилось
9
10
Подводные камни
11
Подводные камни
12
Подводные камни
!=
GCC LLVM
13
Подводные камни
~350 строк кода
~200 строк кода
Подводные камни
14
Protobuf
Подводные камни
15
Малоинформативные crash reports
И все таки: быть или не быть?
1. Для разработки первоначальной версии
выделять время с запасом
2. Начинать разработку с iOS версии для
упрощения отладки
3. Использовать готовые
кроссплатформенные сериализаторы
наподобие Protobuf
16
17
Спасибо за внимание
Коршунов Михаил
mr.ra1ph91@gmail.com
https://vk.com/mkorshunov

More Related Content

What's hot

Денис Трифонов
Денис ТрифоновДенис Трифонов
Денис ТрифоновCodeFest
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Ontico
 
матлогика для программистов
матлогика для программистовматлогика для программистов
матлогика для программистовetyumentcev
 
Платформа SmartActors
Платформа SmartActorsПлатформа SmartActors
Платформа SmartActorsetyumentcev
 
Что такое Robot Framework?
Что такое Robot Framework?Что такое Robot Framework?
Что такое Robot Framework?Mykhailo Poliarush
 
«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...Nata_Churda
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines Sergey Zubkov
 
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxPlatonov Sergey
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийSoftengi
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 

What's hot (15)

Денис Трифонов
Денис ТрифоновДенис Трифонов
Денис Трифонов
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Coding like a sex
Coding like a sexCoding like a sex
Coding like a sex
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
 
матлогика для программистов
матлогика для программистовматлогика для программистов
матлогика для программистов
 
Платформа SmartActors
Платформа SmartActorsПлатформа SmartActors
Платформа SmartActors
 
Что такое Robot Framework?
Что такое Robot Framework?Что такое Robot Framework?
Что такое Robot Framework?
 
C#5 What's new?
C#5 What's new?C#5 What's new?
C#5 What's new?
 
«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...«Как ради производительности высоконагруженного приложения мы разработали соб...
«Как ради производительности высоконагруженного приложения мы разработали соб...
 
Java one presentation
Java one presentationJava one presentation
Java one presentation
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines
 
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложений
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 

Similar to Кроссплатформенная библиотека для Android и iOS: за и против

Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойAlexander Byndyu
 
Encom Aurora - Александр Попов - митап на DevConf
Encom Aurora - Александр Попов - митап на DevConfEncom Aurora - Александр Попов - митап на DevConf
Encom Aurora - Александр Попов - митап на DevConfchatbotscommunity
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
QuickBuilder - how to make your own Android projects builder
QuickBuilder - how to make your own Android projects builderQuickBuilder - how to make your own Android projects builder
QuickBuilder - how to make your own Android projects builderIgor Khomenko
 
CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорAlexander Byndyu
 
Денис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуДенис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуYandex
 
Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойAlexander Byndyu
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложенийОлег Винников
 
Golang в avito
Golang в avitoGolang в avito
Golang в avitoAvitoTech
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Elogic Magento Development
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhonePavel Bashmakov
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networkingguest57eb8a
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииVoximplant
 
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Yandex
 
Инструменты тестирования Microsoft - в облаке и локально
Инструменты тестирования Microsoft - в облаке и локальноИнструменты тестирования Microsoft - в облаке и локально
Инструменты тестирования Microsoft - в облаке и локальноMicrosoft
 
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXСбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXBoris Volfson
 
Использование ICONIX для анализа требований в Scrum
Использование ICONIX для анализа требований в ScrumИспользование ICONIX для анализа требований в Scrum
Использование ICONIX для анализа требований в ScrumNikita Filippov
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Vadim Martynov
 

Similar to Кроссплатформенная библиотека для Android и iOS: за и против (20)

Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределенной
 
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
 
Encom Aurora - Александр Попов - митап на DevConf
Encom Aurora - Александр Попов - митап на DevConfEncom Aurora - Александр Попов - митап на DevConf
Encom Aurora - Александр Попов - митап на DevConf
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
QuickBuilder - how to make your own Android projects builder
QuickBuilder - how to make your own Android projects builderQuickBuilder - how to make your own Android projects builder
QuickBuilder - how to make your own Android projects builder
 
CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафор
 
Денис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуДенис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылу
 
Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределенной
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
 
Golang в avito
Golang в avitoGolang в avito
Golang в avito
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhone
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networking
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложении
 
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"
 
Инструменты тестирования Microsoft - в облаке и локально
Инструменты тестирования Microsoft - в облаке и локальноИнструменты тестирования Microsoft - в облаке и локально
Инструменты тестирования Microsoft - в облаке и локально
 
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXСбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
 
Использование ICONIX для анализа требований в Scrum
Использование ICONIX для анализа требований в ScrumИспользование ICONIX для анализа требований в Scrum
Использование ICONIX для анализа требований в Scrum
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
 
Викрон, Роман Жуков
Викрон, Роман ЖуковВикрон, Роман Жуков
Викрон, Роман Жуков
 

More from DotNetConf

Как грабить корованы
Как грабить корованыКак грабить корованы
Как грабить корованыDotNetConf
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерDotNetConf
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокDotNetConf
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоDotNetConf
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программированиеDotNetConf
 
Делаем очередь поверх Кассандры
Делаем очередь поверх КассандрыДелаем очередь поверх Кассандры
Делаем очередь поверх КассандрыDotNetConf
 
К искусству записи пользовательских историй
К искусству записи пользовательских историйК искусству записи пользовательских историй
К искусству записи пользовательских историйDotNetConf
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET CoreDotNetConf
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Быстрый бэкенд с parse.com
Быстрый бэкенд с parse.comБыстрый бэкенд с parse.com
Быстрый бэкенд с parse.comDotNetConf
 
Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?DotNetConf
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиDotNetConf
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache HadoopDotNetConf
 
Робототехника для прикладных программистов
Робототехника для прикладных программистовРобототехника для прикладных программистов
Робототехника для прикладных программистовDotNetConf
 
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программистаРазработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программистаDotNetConf
 
Inversion of Control в .NET
Inversion of Control в .NETInversion of Control в .NET
Inversion of Control в .NETDotNetConf
 
Введение в реактивный .NET
Введение в реактивный .NETВведение в реактивный .NET
Введение в реактивный .NETDotNetConf
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...DotNetConf
 
Машинное обучение на платформе .NET
Машинное обучение на платформе .NETМашинное обучение на платформе .NET
Машинное обучение на платформе .NETDotNetConf
 

More from DotNetConf (19)

Как грабить корованы
Как грабить корованыКак грабить корованы
Как грабить корованы
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузер
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Делаем очередь поверх Кассандры
Делаем очередь поверх КассандрыДелаем очередь поверх Кассандры
Делаем очередь поверх Кассандры
 
К искусству записи пользовательских историй
К искусству записи пользовательских историйК искусству записи пользовательских историй
К искусству записи пользовательских историй
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Быстрый бэкенд с parse.com
Быстрый бэкенд с parse.comБыстрый бэкенд с parse.com
Быстрый бэкенд с parse.com
 
Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?Kotlin в production. Как и зачем?
Kotlin в production. Как и зачем?
 
Многопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметкиМногопоточное программирование на C#, путевые заметки
Многопоточное программирование на C#, путевые заметки
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
 
Робототехника для прикладных программистов
Робототехника для прикладных программистовРобототехника для прикладных программистов
Робототехника для прикладных программистов
 
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программистаРазработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
 
Inversion of Control в .NET
Inversion of Control в .NETInversion of Control в .NET
Inversion of Control в .NET
 
Введение в реактивный .NET
Введение в реактивный .NETВведение в реактивный .NET
Введение в реактивный .NET
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
 
Машинное обучение на платформе .NET
Машинное обучение на платформе .NETМашинное обучение на платформе .NET
Машинное обучение на платформе .NET
 

Кроссплатформенная библиотека для Android и iOS: за и против