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

Содержание

Слайд 2

Артур Дробинский Ведущий архитектор команды DP Labs arturdr.ru artur.drobinskiy@arturdr.ru

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

arturdr.ru
artur.drobinskiy@arturdr.ru

Слайд 3

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

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

Слайд 4

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

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

Слайд 5

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

iOS

Android

Core

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

Слайд 6

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

iOS

Android

Core

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

Слайд 7

iOS Android Core Windows

iOS

Android

Core

Windows

Слайд 8

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

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

Слайд 9

Дешевле!

Дешевле!

Слайд 10

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

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

Слайд 11

Слайд 12

How does it work?

How does it work?

Слайд 13

Cross-platform code

Cross-platform code

Слайд 14

Cross-platform code Native .apk / .ipa / .exe (application package)

Cross-platform code

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

Слайд 15

Cross-platform code Native .apk / .ipa / .exe (application package) UI, Native controls Native API

Cross-platform code

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

UI, Native controls

Native

API
Слайд 16

Cross-platform code Native .apk / .ipa / .exe (application package)

Cross-platform code

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

UI, Native controls

API

Bridge

Native API

Слайд 17

Слайд 18

PhoneGap

PhoneGap

Слайд 19

Code: JS Native .apk / .ipa / .exe (application package)

Code: JS

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

UI: HTML

Limited API

Bridge

Native API

PhoneGap

WebView

Слайд 20

Qt

Qt

Слайд 21

Code: C++/C# Native .apk / .ipa / .exe (application package)

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)

Code: C#

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

API Bridge

Native API

Xamarin

Native

Controls
Слайд 23

Code: V8, JS Native .apk / .ipa / .exe (application

Code: V8, JS

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

Limited API

Bridge

Native API

React Native

JSX

Native Controls

API Bridge

Слайд 24

Performance

Performance

Слайд 25

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

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

Слайд 26

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

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

Слайд 27

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

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

Слайд 28

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

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

Слайд 29

Xamarin React Native Phonegap

Xamarin React Native Phonegap

Слайд 30

Xamarin React Native Phonegap

Xamarin React Native Phonegap

Слайд 31

Слайд 32

DEMO

DEMO

Слайд 33

React Native

React Native

Слайд 34

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

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

Плюсы

Слайд 35

Breaking Changes Second class android support Javascript & TypeSafety Animations

Breaking Changes
Second class android support
Javascript & TypeSafety
Animations are slow (bridge)
Неполная

поддержка нативных контролов, ненативная разметка

Минусы?

Слайд 36

Xamarin Xamarin Forms React Native

Xamarin

Xamarin Forms
React Native

Слайд 37

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

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

Слайд 38

Утечки памяти и особенности Garbage Collection

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

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

Слайд 39

UIKit.UIButton (peer object) UIButton (native object) API Bridge Использование open-source контролов Необходимо написание собственных API Bridge

UIKit.UIButton
(peer object)

UIButton
(native object)

API Bridge

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

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

Слайд 40

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

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

Слайд 41

easyJet

easyJet

Слайд 42

React Native ☺

React Native ☺

Слайд 43

Слайд 44

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

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

Минусы

Xamarin (и ReactNative)
Слайд 45

Xamarin vs Native

Xamarin vs Native

Слайд 46

Xamarin Сложные Enterprise приложения Существующая команда C# разработчиков Бэкенд на

Xamarin

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

устройствах

Native

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

Слайд 47

Xamarin vs React Native

Xamarin vs React Native

Слайд 48

Xamarin Сложная бизнес логика C#-команда Использование всех нативных возможностей Компиляция,

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

Вопросы?

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

Слайд 50

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

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.renderBars()} {this.renderLabels()}



{this.state.maxValue}


style={[styles.polygonContainer, {borderColor: this.props.borderColor}]}>
{this.renderBars()}


{this.renderLabels()}



Слайд 52

=

=

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