Кросс-платформенная мобильная разработка презентация

Содержание

Слайд 2

Артур Дробинский
Ведущий архитектор команды DP Labs

arturdr.ru
artur.drobinskiy@arturdr.ru

Слайд 3

Зачем кросс-платформенность?

Слайд 4

Везде используем универсальный инструмент

Слайд 5

iOS

Android

Core

Повторное использование кода

Слайд 6

iOS

Android

Core

Повторное использование кода

Слайд 7

iOS

Android

Core

Windows

Слайд 8

Проще поддержка – исправляем баги один раз

Слайд 9

Дешевле!

Слайд 10

Кросс-платформенные решения

Слайд 12

How does it work?

Слайд 13

Cross-platform code

Слайд 14

Cross-platform code

Native .apk / .ipa / .exe (application package)

Слайд 15

Cross-platform code

Native .apk / .ipa / .exe (application package)

UI, Native controls

Native API

Слайд 16

Cross-platform code

Native .apk / .ipa / .exe (application package)

UI, Native controls

API Bridge

Native API

Слайд 19

Code: JS

Native .apk / .ipa / .exe (application package)

UI: HTML

Limited API Bridge

Native API

PhoneGap

WebView

Слайд 21

Code: C++/C#

Native .apk / .ipa / .exe (application package)

UI: QML/Game Engine

Limited API Bridge

Native

API

Qt/Unity

View (Canvas)

Слайд 22

Code: C#

Native .apk / .ipa / .exe (application package)

API Bridge

Native API

Xamarin

Native Controls

Слайд 23

Code: V8, JS

Native .apk / .ipa / .exe (application package)

Limited API Bridge

Native API

React

Native

JSX

Native Controls

API Bridge

Слайд 24

Performance

Слайд 25

Математические вычисления

Слайд 26

SQLite: чтение данных

Слайд 27

Запуск приложения

Слайд 28

Размер приложения

Слайд 29

Xamarin React Native Phonegap

Слайд 30

Xamarin React Native Phonegap

Слайд 33

React Native

Слайд 34

Hype
Hot reloading + простое обновление приложений
Javascript
Встраивание в нативные приложения

Плюсы

Слайд 35

Breaking Changes
Second class android support
Javascript & TypeSafety
Animations are slow (bridge)
Неполная поддержка нативных

контролов, ненативная разметка

Минусы?

Слайд 36

Xamarin

Xamarin Forms
React Native

Слайд 37

Xamarin
Мифы или реальность?

Слайд 38

Утечки памяти

и особенности Garbage Collection

Слайд 39

UIKit.UIButton
(peer object)

UIButton
(native object)

API Bridge

Использование open-source контролов

Необходимо написание собственных API Bridge

Слайд 40

На Xamarin нет приложений

Слайд 42

React Native ☺

Слайд 44

Размер приложения (6MB+)
Большее время запуска приложения
Использование open-sourced controls требует поиска/написания обёртки

Минусы Xamarin (и

ReactNative)

Слайд 45

Xamarin vs Native

Слайд 46

Xamarin

Сложные Enterprise приложения
Существующая команда C# разработчиков
Бэкенд на .NET
Похожие экраны/workflow на разных устройствах

Native

Дублирование бизнес-логики

– не проблема (её мало)
Команда с опытом на Obj-C и Java
Бэкенд на Java ☺
Workflow на Android/iOS радикально различный

Слайд 47

Xamarin vs React Native

Слайд 48

Xamarin

Сложная бизнес логика
C#-команда
Использование всех нативных возможностей
Компиляция, производительность
UWP + Mac (+ Web)
XAML + Native

rendering + Flexbox

React Native

UI-heavy apps
JS-команда
Встраивание в нативные приложения
Быстрое обновление (AppStore, Google Play)
Задержка с новыми фичами на платформах (+ Web)
Flexbox (but only flexbox)

Слайд 49

Вопросы?

http://arturdr.ru
artur.drobinskiy@arturdr.ru

Слайд 50

ItemTapped="Handle_ItemTapped" ItemSelected="Handle_ItemSelected"
HasUnevenRows="true" GroupShortNameBinding = "{Binding Key}"
IsGroupingEnabled = "true"

GroupDisplayBinding = "{Binding Key}">












HorizontalOptions="CenterAndExpand" Vertical`Options="CenterAndExpand"
Aspect="AspectFill" WidthRequest="66" Grid.RowSpan="2" Source="{Binding Image}"/>





Слайд 51



{this.state.maxValue}


this.props.borderColor}]}>
{this.renderBars()}


{this.renderLabels()}



Имя файла: Кросс-платформенная-мобильная-разработка.pptx
Количество просмотров: 65
Количество скачиваний: 0