$30 off During Our Annual Pro Sale. View Details »

Android Architecture Blueprints

Android Architecture Blueprints

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

David González

March 16, 2017
Tweet

More Decks by David González

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. 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?)

    View Slide

  4. Beginner Intermediate Advanced
    Target Audience

    View Slide

  5. 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

    View Slide

  6. A to-do app

    View Slide

  7. 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

    View Slide

  8. UI Testing as a contract

    View Slide

  9. View Slide

  10. Travis

    View Slide

  11. circleci

    View Slide

  12. Firebase Test Lab

    View Slide

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

    View Slide

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

    View Slide

  15. How to use Blueprints

    View Slide

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

    View Slide

  17. 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

    View Slide

  18. meld

    View Slide

  19. View Slide

  20. todo-mvp

    View Slide

  21. todo-mvp-clean

    View Slide

  22. todo-mvp-contentproviders

    View Slide

  23. todo-databinding

    View Slide

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

    View Slide

  25. Dex count

    View Slide

  26. APK size

    View Slide

  27. View Slide

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

    View Slide

  29. Contribution examples

    View Slide

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

    View Slide

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

    View Slide