SlideShare a Scribd company logo
1 of 45
Download to read offline
Meero
Meero
• Create dedicated tools for photographers to make their life easier

• Prospecting

• Community

• No photo editing during production process
Objective Results
• Teach our algorithm the different
improvements performed by image
professionals
• Make it resistant to variations in
lighting (such as white balance ),
and image flaws (such as noise or
motion blur)
How we designed our iOS and
Android apps with same
architecture
And without cross-platform frameworks
Plan
• History

• State of cross-platform

• Considering developing iOS and Android apps in the same way 

• Devsign thinking

• Future 

• Conclusion
History
2007 2011 2014 2015 2016 2017 2018 2019
Android
iOS
Fragment RecyclerView
UIAlertViewController
Widget / Extension
UIStackView
SFSafariViewController

ForceTouch
Permissions
CustomsTabs
AppShortcuts
ConstraintLayout
Room
ARKit
Files
HomeIndicator
Notification provisionnal
Navigation arch
ARCore
HomeIndicator
SwiftUI
Combine
Geoloc permission
Darkmode
Compose
Flow
Geoloc permission
Darkmode
State of cross-platform
State of cross-platform
Mobile market development is still looking after the best cross-platform
solutions:

• PhoneGap/Cordova, Titanium, Appcelerator, SenchaTouch…

• ReactNative, NativeScript, RubyMotion, …

• Flutter, KotlinNative
State of cross-platform
Sharing
Business and UI logic code
Reducing
Time of development by
reducing the time to market
Ownership
Of the rendering engine
Updating
OTA with code push
Designing
Isomorphic application
Offering
Simple way to target
and develop for specific platform
State of cross-platform
Hard to choose
Because too many choices
Need to wait
Developers to give access to
the latest native SDK features
Reduce
Or equalize native performances.
Increase size of apps
Hidden cost
With additional bugs, limitations
new skills needed, technical stack
Are dropped
Titanium, Xamarin, Angular? (Ionic)
Subjected
To the rules of app stores for code push restrictions
Api violations (Electron) or webview shell
• Legacy projects
• Not started at the same time
• Started with different choices
• Beliefs and experiences of
developers.
iOS / Android apps Why ?
• Two different architectures
• Functional differences on same
features
Is it possible to write
cross-native apps in 2020 ?
Languages
• Optionnals
• Sealed class, data class
• Extensions, interface implementation, generics
• Immutabilité
• map - reduce - join - filter
• Delegated properties (by)
• Spannable string
• let?. / val ?: return
• …
• Optionnals
• Enums, structs
• Extensions , protocol extension, generics
• Immutabilité
• map - reduce- join - filter
• Property wrappers (@)
• Attributed string
• if let / guard let
• …
Swift code
Kotlin code
Appcode et Android Studio
😏
iOS et Android components
• Activity, Fragment, RecyclerView

• ConstraintLayout, LinearLayout, Compose

• Permission

• WorkManager

• Notifications (silent, local, push)

• DialogFragment / IntentChooser

• ARCore / Sceneform

• CustomTabs

• Room

• …
• ViewController, ChildViewController, UITableView
• Autolayout, UIStackView, SwiftUI
• Permissions
• Background Modes
• Notifications (silent, local, push)
• UIAlertViewController / UIActivityViewController
• ARKit / SceneKit
• SFSafariViewController
• CoreData
• …
ForgotPasswordViewController.swift ForgotPasswordActivity.kt
Librairies
• Share same apis

• Same behaviours
• Needs
• Maintenance, security, …
• Integration complexity
• Cost saving
• Licence
• …
Specific criteriaCommon criteria
• RxJava / RxAndroid
• Dagger2 / Koin
• Mockito - Spek - Atrium / AssertK
• Picasso / Glide / Coil
• Retrofit
• MPAndroidChart
• Realm
• …
• RxSwift
• Swinject
• Cuckoo - Quick - Nimble
• KingFisher / SDWebImage
• Alamofire router
• Charts
• Realm
• …
Mockito test code
Cuckoo test code
Architectures
Architectures
• MVC, MVP, MVVM, MVI

• Clean architecture

• Router / Coordinators

• Delegation

• Decorators
• Modifications must be done twice
• Rigorous respect of naming
conventions, folder tree, …
• Complicated to be 100%
• Synchronous update to avoid
divergences
Pros Cons
• Common reflexion
• Fatest bugs detection, same bugs
• Seamless switch from iOS to
Android, quick learning curve
• Same functional behaviours
• No architecture debate during
reviews between platform
Tooling
• Ktlint, AndroidLint
• Ktlint (--format)
• Bitrise, Fastlane, Danger, …
• SwiftLint
• SwiftFormat
• Bitrise, Fastlane, Danger, …
Team
Team
• At least one Team Lead

• Guardian of the rules and process

• Experience on both platform

• Developers

• Knowledge at least on one platform

• Motivated to learn developing / reviewing the other platform

• Open minded

• Curious
• New constraints for work
• Must hire people that can embrace
this vision of cross-native
development
• Communication is mandatory
Pros Cons
• Share ownership of the apps
• Share technic knowledges
• Co-construction
• Create communication
• A “single” team
• Natural for feature team
How to succeed ?
Devsign thinking
Devsign thinking
• Design thinking for developers
• Development cycle in three steps
Reflexion
DevelopmentCross reviews
First step - reflexion
• Discussing and picking about the best solution for design the new
feature in the same way on both platform
• During grooming and / or specific technical meeting
• At least one iOS and Android developer
Second step - development
• Keys to achieve:

• Respect the technical choices and decisions

• Communication for problems or enhancement
Step three - cross reviews
• iOS code should be reviewed by Android developer for the same feature

• Should be reviewed by third person to improve or definitely validate

• Cross testing 

• Communication !

• No compromise without validation from both parties
Conclusion
• Some step could be complicated to
perform on big legacy project
• Communication
• Technical debates could be long
• Bigger is the feature, longer will be
the review
Benefits Obstacles
• Easy to perform for a new project
• Force conventions
• Opportunity for refactoring legacy
portion of code
• Opportunity for develop on other
platform
• Makes you more valuable, new career
opportunities
Once you tried it,
you can’t go
Future
• Use Danger to automatically check naming function, files and folders trees

• Continue with web front-development for same features (react native
strength)

• Prepare the field if tomorrow we really have to deal with ReactNative,
Flutter or KotlinNative.
Thank you
+ = ❤
Christopher SAEZ
Mobile developer @meero
christopher.saez@meero.com
https://www.linkedin.com/in/saezchristopher/

More Related Content

What's hot

Continuous code quality_in_java
Continuous code quality_in_javaContinuous code quality_in_java
Continuous code quality_in_javaManimekalai48
 
Getting Started with Puppet Bolt
Getting Started with Puppet BoltGetting Started with Puppet Bolt
Getting Started with Puppet BoltPuppet
 
Step away from that knife!
Step away from that knife!Step away from that knife!
Step away from that knife!Michael Goetz
 
Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014Vincent Latombe
 
Dusty Parrott Resume
Dusty Parrott ResumeDusty Parrott Resume
Dusty Parrott ResumeDusty Parrott
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseDevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseEficode
 
Virtual Puppet Ecosystem Workshop - March 18,2020
Virtual Puppet Ecosystem Workshop - March 18,2020Virtual Puppet Ecosystem Workshop - March 18,2020
Virtual Puppet Ecosystem Workshop - March 18,2020Puppet
 
Python as Web Development
Python as Web Development Python as Web Development
Python as Web Development SamWas1
 
Easy Cross-Platform PowerShell Automation with Puppet Bolt
Easy Cross-Platform PowerShell Automation with Puppet BoltEasy Cross-Platform PowerShell Automation with Puppet Bolt
Easy Cross-Platform PowerShell Automation with Puppet BoltPuppet
 
Flutter: Future of App Development
Flutter: Future of App DevelopmentFlutter: Future of App Development
Flutter: Future of App Development9 series
 
Groovy Testing Aug2009
Groovy Testing Aug2009Groovy Testing Aug2009
Groovy Testing Aug2009guest4a266c
 
Model For Applying Unit Test
Model For Applying Unit TestModel For Applying Unit Test
Model For Applying Unit TestHieu Le Trung
 
IoT em tempo real com Firebase e JavaScript
IoT em tempo real com Firebase e JavaScriptIoT em tempo real com Firebase e JavaScript
IoT em tempo real com Firebase e JavaScriptHenri Cavalcante
 
Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for BeginnersYüce Çelikel
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationJoseph Wang
 
Test driven development with sonarQube
Test driven development with sonarQubeTest driven development with sonarQube
Test driven development with sonarQubeNanthakumar Suvethan
 
[Japan Selenium User Community in Remote] Test Automation Journey
[Japan Selenium User Community in Remote] Test Automation Journey[Japan Selenium User Community in Remote] Test Automation Journey
[Japan Selenium User Community in Remote] Test Automation JourneyWoohyeok Kim
 

What's hot (20)

Selenium
SeleniumSelenium
Selenium
 
Continuous code quality_in_java
Continuous code quality_in_javaContinuous code quality_in_java
Continuous code quality_in_java
 
Getting Started with Puppet Bolt
Getting Started with Puppet BoltGetting Started with Puppet Bolt
Getting Started with Puppet Bolt
 
Step away from that knife!
Step away from that knife!Step away from that knife!
Step away from that knife!
 
Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014Going literate in Amadeus JUC Berlin June 25th 2014
Going literate in Amadeus JUC Berlin June 25th 2014
 
Dusty Parrott Resume
Dusty Parrott ResumeDusty Parrott Resume
Dusty Parrott Resume
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseDevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet Enterprise
 
Virtual Puppet Ecosystem Workshop - March 18,2020
Virtual Puppet Ecosystem Workshop - March 18,2020Virtual Puppet Ecosystem Workshop - March 18,2020
Virtual Puppet Ecosystem Workshop - March 18,2020
 
Python as Web Development
Python as Web Development Python as Web Development
Python as Web Development
 
Easy Cross-Platform PowerShell Automation with Puppet Bolt
Easy Cross-Platform PowerShell Automation with Puppet BoltEasy Cross-Platform PowerShell Automation with Puppet Bolt
Easy Cross-Platform PowerShell Automation with Puppet Bolt
 
Flutter: Future of App Development
Flutter: Future of App DevelopmentFlutter: Future of App Development
Flutter: Future of App Development
 
Fastlane
FastlaneFastlane
Fastlane
 
Groovy Testing Aug2009
Groovy Testing Aug2009Groovy Testing Aug2009
Groovy Testing Aug2009
 
Model For Applying Unit Test
Model For Applying Unit TestModel For Applying Unit Test
Model For Applying Unit Test
 
IoT em tempo real com Firebase e JavaScript
IoT em tempo real com Firebase e JavaScriptIoT em tempo real com Firebase e JavaScript
IoT em tempo real com Firebase e JavaScript
 
Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for Beginners
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Test driven development with sonarQube
Test driven development with sonarQubeTest driven development with sonarQube
Test driven development with sonarQube
 
[Japan Selenium User Community in Remote] Test Automation Journey
[Japan Selenium User Community in Remote] Test Automation Journey[Japan Selenium User Community in Remote] Test Automation Journey
[Japan Selenium User Community in Remote] Test Automation Journey
 

Similar to Is it possible to write cross-native apps in 2020 ?

Android application development
Android application developmentAndroid application development
Android application developmentLinh Vi Tường
 
Uniface Lectures Webinar - Extending Applications for Mobile
Uniface Lectures Webinar - Extending Applications for Mobile Uniface Lectures Webinar - Extending Applications for Mobile
Uniface Lectures Webinar - Extending Applications for Mobile Uniface
 
Synapse india reviews on android application
Synapse india reviews on android applicationSynapse india reviews on android application
Synapse india reviews on android applicationsaritasingh19866
 
The iOS technical interview: get your dream job as an iOS developer
The iOS technical interview: get your dream job as an iOS developerThe iOS technical interview: get your dream job as an iOS developer
The iOS technical interview: get your dream job as an iOS developerJuan C Catalan
 
A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)Oursky
 
Comp4010 Lecture7 Designing AR Systems
Comp4010 Lecture7 Designing AR SystemsComp4010 Lecture7 Designing AR Systems
Comp4010 Lecture7 Designing AR SystemsMark Billinghurst
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformAndrew Ferrier
 
Inspect The Uninspected
Inspect The UninspectedInspect The Uninspected
Inspect The Uninspectedcgack
 
Modeling on the Web
Modeling on the WebModeling on the Web
Modeling on the WebIcinetic
 
Rabbit Hole® – A User Experience Case StudyCx ux engage_2014_rabbit_hole
Rabbit Hole® – A User Experience Case StudyCx ux engage_2014_rabbit_holeRabbit Hole® – A User Experience Case StudyCx ux engage_2014_rabbit_hole
Rabbit Hole® – A User Experience Case StudyCx ux engage_2014_rabbit_holeAvtex
 
Titanium appcelerator kickstart
Titanium appcelerator kickstartTitanium appcelerator kickstart
Titanium appcelerator kickstartAlessio Ricco
 
Exploring Ketai Library, Droidcon
Exploring Ketai Library, DroidconExploring Ketai Library, Droidcon
Exploring Ketai Library, Droidconsriram_iyengar
 
Synapseindia android apps application development
Synapseindia android apps application developmentSynapseindia android apps application development
Synapseindia android apps application developmentSynapseindiappsdevelopment
 
Kevin Whinnery: Best Practices for Cross-Platform Mobile Development
Kevin Whinnery: Best Practices for Cross-Platform Mobile DevelopmentKevin Whinnery: Best Practices for Cross-Platform Mobile Development
Kevin Whinnery: Best Practices for Cross-Platform Mobile DevelopmentAxway Appcelerator
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator PresentationAaron Saunders
 

Similar to Is it possible to write cross-native apps in 2020 ? (20)

Android application development
Android application developmentAndroid application development
Android application development
 
Uniface Lectures Webinar - Extending Applications for Mobile
Uniface Lectures Webinar - Extending Applications for Mobile Uniface Lectures Webinar - Extending Applications for Mobile
Uniface Lectures Webinar - Extending Applications for Mobile
 
Synapse india reviews on android application
Synapse india reviews on android applicationSynapse india reviews on android application
Synapse india reviews on android application
 
The iOS technical interview: get your dream job as an iOS developer
The iOS technical interview: get your dream job as an iOS developerThe iOS technical interview: get your dream job as an iOS developer
The iOS technical interview: get your dream job as an iOS developer
 
A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)
 
Comp4010 Lecture7 Designing AR Systems
Comp4010 Lecture7 Designing AR SystemsComp4010 Lecture7 Designing AR Systems
Comp4010 Lecture7 Designing AR Systems
 
Android quick talk
Android quick talkAndroid quick talk
Android quick talk
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
 
Inspect The Uninspected
Inspect The UninspectedInspect The Uninspected
Inspect The Uninspected
 
Modeling on the Web
Modeling on the WebModeling on the Web
Modeling on the Web
 
Modeling on the Web
Modeling on the WebModeling on the Web
Modeling on the Web
 
Rabbit Hole® – A User Experience Case StudyCx ux engage_2014_rabbit_hole
Rabbit Hole® – A User Experience Case StudyCx ux engage_2014_rabbit_holeRabbit Hole® – A User Experience Case StudyCx ux engage_2014_rabbit_hole
Rabbit Hole® – A User Experience Case StudyCx ux engage_2014_rabbit_hole
 
Titanium appcelerator kickstart
Titanium appcelerator kickstartTitanium appcelerator kickstart
Titanium appcelerator kickstart
 
Exploring Ketai Library, Droidcon
Exploring Ketai Library, DroidconExploring Ketai Library, Droidcon
Exploring Ketai Library, Droidcon
 
Synapseindia android apps application development
Synapseindia android apps application developmentSynapseindia android apps application development
Synapseindia android apps application development
 
The Developers World
The Developers WorldThe Developers World
The Developers World
 
Kevin Whinnery: Best Practices for Cross-Platform Mobile Development
Kevin Whinnery: Best Practices for Cross-Platform Mobile DevelopmentKevin Whinnery: Best Practices for Cross-Platform Mobile Development
Kevin Whinnery: Best Practices for Cross-Platform Mobile Development
 
Lecture3
Lecture3Lecture3
Lecture3
 
Android development first steps
Android development   first stepsAndroid development   first steps
Android development first steps
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator Presentation
 

Recently uploaded

Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSCAESB
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...ranjana rawat
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations120cr0395
 

Recently uploaded (20)

Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentation
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 

Is it possible to write cross-native apps in 2020 ?

  • 2. Meero • Create dedicated tools for photographers to make their life easier • Prospecting • Community • No photo editing during production process
  • 3. Objective Results • Teach our algorithm the different improvements performed by image professionals • Make it resistant to variations in lighting (such as white balance ), and image flaws (such as noise or motion blur)
  • 4. How we designed our iOS and Android apps with same architecture And without cross-platform frameworks
  • 5. Plan • History • State of cross-platform • Considering developing iOS and Android apps in the same way • Devsign thinking • Future • Conclusion
  • 6. History 2007 2011 2014 2015 2016 2017 2018 2019 Android iOS Fragment RecyclerView UIAlertViewController Widget / Extension UIStackView SFSafariViewController
 ForceTouch Permissions CustomsTabs AppShortcuts ConstraintLayout Room ARKit Files HomeIndicator Notification provisionnal Navigation arch ARCore HomeIndicator SwiftUI Combine Geoloc permission Darkmode Compose Flow Geoloc permission Darkmode
  • 8. State of cross-platform Mobile market development is still looking after the best cross-platform solutions: • PhoneGap/Cordova, Titanium, Appcelerator, SenchaTouch… • ReactNative, NativeScript, RubyMotion, … • Flutter, KotlinNative
  • 9. State of cross-platform Sharing Business and UI logic code Reducing Time of development by reducing the time to market Ownership Of the rendering engine Updating OTA with code push Designing Isomorphic application Offering Simple way to target and develop for specific platform
  • 10. State of cross-platform Hard to choose Because too many choices Need to wait Developers to give access to the latest native SDK features Reduce Or equalize native performances. Increase size of apps Hidden cost With additional bugs, limitations new skills needed, technical stack Are dropped Titanium, Xamarin, Angular? (Ionic) Subjected To the rules of app stores for code push restrictions Api violations (Electron) or webview shell
  • 11. • Legacy projects • Not started at the same time • Started with different choices • Beliefs and experiences of developers. iOS / Android apps Why ? • Two different architectures • Functional differences on same features
  • 12. Is it possible to write cross-native apps in 2020 ?
  • 14. • Optionnals • Sealed class, data class • Extensions, interface implementation, generics • Immutabilité • map - reduce - join - filter • Delegated properties (by) • Spannable string • let?. / val ?: return • … • Optionnals • Enums, structs • Extensions , protocol extension, generics • Immutabilité • map - reduce- join - filter • Property wrappers (@) • Attributed string • if let / guard let • …
  • 16. Appcode et Android Studio 😏
  • 17. iOS et Android components
  • 18. • Activity, Fragment, RecyclerView • ConstraintLayout, LinearLayout, Compose • Permission • WorkManager • Notifications (silent, local, push) • DialogFragment / IntentChooser • ARCore / Sceneform • CustomTabs • Room • … • ViewController, ChildViewController, UITableView • Autolayout, UIStackView, SwiftUI • Permissions • Background Modes • Notifications (silent, local, push) • UIAlertViewController / UIActivityViewController • ARKit / SceneKit • SFSafariViewController • CoreData • …
  • 21. • Share same apis • Same behaviours • Needs • Maintenance, security, … • Integration complexity • Cost saving • Licence • … Specific criteriaCommon criteria
  • 22. • RxJava / RxAndroid • Dagger2 / Koin • Mockito - Spek - Atrium / AssertK • Picasso / Glide / Coil • Retrofit • MPAndroidChart • Realm • … • RxSwift • Swinject • Cuckoo - Quick - Nimble • KingFisher / SDWebImage • Alamofire router • Charts • Realm • …
  • 24.
  • 26. Architectures • MVC, MVP, MVVM, MVI • Clean architecture • Router / Coordinators • Delegation • Decorators
  • 27.
  • 28. • Modifications must be done twice • Rigorous respect of naming conventions, folder tree, … • Complicated to be 100% • Synchronous update to avoid divergences Pros Cons • Common reflexion • Fatest bugs detection, same bugs • Seamless switch from iOS to Android, quick learning curve • Same functional behaviours • No architecture debate during reviews between platform
  • 30. • Ktlint, AndroidLint • Ktlint (--format) • Bitrise, Fastlane, Danger, … • SwiftLint • SwiftFormat • Bitrise, Fastlane, Danger, …
  • 31. Team
  • 32. Team • At least one Team Lead • Guardian of the rules and process • Experience on both platform • Developers • Knowledge at least on one platform • Motivated to learn developing / reviewing the other platform • Open minded • Curious
  • 33. • New constraints for work • Must hire people that can embrace this vision of cross-native development • Communication is mandatory Pros Cons • Share ownership of the apps • Share technic knowledges • Co-construction • Create communication • A “single” team • Natural for feature team
  • 36. Devsign thinking • Design thinking for developers • Development cycle in three steps Reflexion DevelopmentCross reviews
  • 37. First step - reflexion • Discussing and picking about the best solution for design the new feature in the same way on both platform • During grooming and / or specific technical meeting • At least one iOS and Android developer
  • 38. Second step - development • Keys to achieve: • Respect the technical choices and decisions • Communication for problems or enhancement
  • 39. Step three - cross reviews • iOS code should be reviewed by Android developer for the same feature • Should be reviewed by third person to improve or definitely validate • Cross testing • Communication ! • No compromise without validation from both parties
  • 41. • Some step could be complicated to perform on big legacy project • Communication • Technical debates could be long • Bigger is the feature, longer will be the review Benefits Obstacles • Easy to perform for a new project • Force conventions • Opportunity for refactoring legacy portion of code • Opportunity for develop on other platform • Makes you more valuable, new career opportunities
  • 42. Once you tried it, you can’t go
  • 43. Future • Use Danger to automatically check naming function, files and folders trees • Continue with web front-development for same features (react native strength) • Prepare the field if tomorrow we really have to deal with ReactNative, Flutter or KotlinNative.
  • 45. Christopher SAEZ Mobile developer @meero christopher.saez@meero.com https://www.linkedin.com/in/saezchristopher/