Slide 1

Slide 1 text

Android Architecture Blueprints A collection of samples to discuss and showcase different architectural tools and patterns for Android apps

Slide 2

Slide 2 text

David González Software Engineer@ Help Scout - Google Developer Expert @dggonzalez

Slide 3

Slide 3 text

Jose Alcérreca Stephan Linzner Natalie Masse Mustafa Kurtuldu David González Jorge Barroso (Karumi) Saúl Molinero Erik Hellman Florina Muntenescu Rainer-Lang Etienne Caron Ubiratan Soares Tomasz Rykała Andrew Brandon Gogetap Cesar Augusto Zapata Baldassarri Deividi Dmitriy Zaitsev Duong Quang Son Eugen Martynov Greg Pearce Kiran Rao Nikita Kozlov Ravindra Kumar Samuel Urbanowicz Shinya Fukuta Yigit Boyar h3r3x3 (you?)

Slide 4

Slide 4 text

Beginner Intermediate Advanced Target Audience

Slide 5

Slide 5 text

Blueprints is an architecture a testing project. ● UI Testing as a Spec Fast, reliable and hermetic ● Decent unit test coverage Mockito, MockableAndroidJar, no Robolectric, no powermock ● Use Non-UI Android tests Test against real implementations, compatibility testing

Slide 6

Slide 6 text

A to-do app

Slide 7

Slide 7 text

todo-mvp/ - Basic Model-View-Presenter architecture todo-mvp-loaders/ - Fetches data using Loaders todo-mvp-contentproviders/ - Uses Content Providers todo-databinding/ - Uses the Data Binding Library todo-mvp-clean/ - Uses concepts from Clean Architecture todo-mvp-dagger/ - Uses Dagger2 for Dependency Injection todo-mvp-rxjava/ - Uses RxJava for concurrency and data layer abstraction dev-todo-mvvm-databinding/ - Model View View Model based on todo-databinding dev-todo-mvvm-rxjava/ - Model View View Model based on todo-mvp-rxjava todo-mvp-fragmentless/ - Uses Android views instead of Fragments todo-mvp-conductor/ - Single Activity + Conductor framework todo-mvp-tablet/ - Phone + Tablet version Stable In development External In review

Slide 8

Slide 8 text

UI Testing as a contract

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Travis

Slide 11

Slide 11 text

circleci

Slide 12

Slide 12 text

Firebase Test Lab

Slide 13

Slide 13 text

Design decisions Flavors (mock/prod) Minifier / shrinker Fragments Simulated network calls

Slide 14

Slide 14 text

Blueprints is a collection of samples platform for Android devs. ● Learning ● Outreach/discuss ● Base for sample or template for app ● GitHub cred ★★★★★

Slide 15

Slide 15 text

How to use Blueprints

Slide 16

Slide 16 text

Browse on GitHub github.com/googlesamples/ android-architecture

Slide 17

Slide 17 text

Compare locally Diffs between branches are as small as possible $ git clone https://github.com/ googlesamples/ android-architecture.git $ git checkout todo-mvp $ git difftool -d todo-mvp-clean

Slide 18

Slide 18 text

meld

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

todo-mvp

Slide 21

Slide 21 text

todo-mvp-clean

Slide 22

Slide 22 text

todo-mvp-contentproviders

Slide 23

Slide 23 text

todo-databinding

Slide 24

Slide 24 text

Findings Dex method count APK size IRRELEVANT (if you shrink)

Slide 25

Slide 25 text

Dex count

Slide 26

Slide 26 text

APK size

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

HELP! ● Answer questions and reply to issues ● Wiki and articles ● Create samples (read guidelines!) ● Become core maintainer (merge-master)

Slide 29

Slide 29 text

Contribution examples

Slide 30

Slide 30 text

V2: What is coming ● Focusing on underlying patterns ○ MVVM, MVC, Redux, Flux… ● Other apps, different spec ● Improve platform for discussion

Slide 31

Slide 31 text

Thank you! github.com/googlesamples/android-architecture David González @dggonzalez