Slide 1

Slide 1 text

The android eras tour Erik Jhordan Rey Google Developer Expert, Android @ErikJhordan_Rey

Slide 2

Slide 2 text

The android eras tour timeline

Slide 3

Slide 3 text

2008 - 2014 - 2008 Android Initial Release 2014 - 2017 2017 - 2021 2021 - 2023 “Android: Looking backward”

Slide 4

Slide 4 text

● Android development started in 2003 ● Acquired by Google in 2005 ● Android SDK released in 2007 ● Android 1.0 commercial release in 2008 HTC Dream Android: Looking backward

Slide 5

Slide 5 text

2008 - 2014 - 2008 Android Initial Release 2014 - 2017 2017 - 2021 2021 - 2023 “Android Legendary” Java Open source libraries

Slide 6

Slide 6 text

● Java Language ● Eclipse, ADT Bundle, Android Studio ● God Activities, RelativeLayout, findViewById, ListView, GridView ● Asynctask, SqLiteOpenHelper, HttpURLConnection ● Volley, ButterKnife, ViewPagerIndicator, ActionBarSherlock ● Square libraries first versions (Retrofit, Okhttp 1, Dagger 1, Picasso) ● Does not exist architecture guidelines for android, multiple MVC implementations ● Limited UI design patterns ● Inheritance based development (Manager, Helper, Utils classes) Android Legendary

Slide 7

Slide 7 text

2008 - 2014 - 2008 Android Initial Release 2014 - 2017 2017 - 2021 2021 - 2023 “This is the android developer way” Java Open source libraries Material Design Architectural Patterns

Slide 8

Slide 8 text

● Material Design ● Strategies to develop testable and maintainable apps (SOLID, Clean Code, Clean Architecture) ● Design Patterns (Repository, Dependency Injection, Service Locator, Singleton, Builder, Factory, Observer, etc) ● Architecture UI Patterns proposals (MVP, MVVM, MVI, MV?) ● Modularization, DDD, separation of concerns, and scalable architecture design ● Refactoring, and Testing Tools (Junit, Mockito, MockWebserver, Robolectric) ● Reactive Paradigms ● RXJava2, Dagger2, Retrofit2, Glide ● Kotlin early adopters This is the android developer way https://speakerdeck.com/erikjhordan_rey/android-apps-in-modular-structure-paradigms

Slide 9

Slide 9 text

2008 - 2014 - 2008 Android Initial Release 2014 - 2017 2017 - 2021 2021 - 2023 “Android developers don’t lose faith” Java Open source libraries Material Design Architectural Patterns Kotlin Support AAC

Slide 10

Slide 10 text

● Kotlin Official Support in 2017 ● Android Architecture Components (View Binding, Lifecycle aware, Live Data, ViewModel, Room, Paging, Camera, Material Design, etc) ● Simplify asynchronously code (Coroutines) ● Android Kotlin-first approach in 2019 ● Android’s team opinions over patterns and architecture ● MVVM & Modularization Guides ● Espresso and Testing libraries Android developers don't lose faith

Slide 11

Slide 11 text

2008 - 2014 - 2008 Android Initial Release 2014 - 2017 2017 - 2021 2021 - 2023 “The Android team’s connect the dots” Java Open source libraries Material Design Architectural Patterns Kotlin Support AAC Modern Android Development (MAD)

Slide 12

Slide 12 text

● Better documentation for Android Development ● Android’s team recommended development tools, libraries, and architecture guidance ● Jetpack Libraries to help developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions. ● New modern toolkit for building native UI - Compose ● Multiple tools to improve developer experience in Android Studio The Android team’s connect the dots

Slide 13

Slide 13 text

Building for the future of android

Slide 14

Slide 14 text

Android Ecosystem

Slide 15

Slide 15 text

Are associated with these characteristics New Android Devices Technology The latest processors, cameras, sensors, and displays. Longevity More RAM, faster SoCs, more durable flash chips leads to devices that have a longer functional lifespan, and often have longer software support. Hardware Better hardware leads to improved responsiveness, smoother animations, higher quality game graphics, AI/ML features, high quality media creation and playback.

Slide 16

Slide 16 text

● View & ViewGroup ● XML UI Design, findViewById ● Fragments, CustomViews ● Material Design, Material Design 2, Material Design 3 ● Lifecycle aware components ● Android Studio Layout Editor ● Declarative UI, Compose Android UI Development

Slide 17

Slide 17 text

Android’s modern toolkit for building native UI Jetpack Compose

Slide 18

Slide 18 text

● Declarative UI is cleaner, readable, and performant than Imperative UI. ● Compose allows you to do more with less code compared to XML. ● Compose is compatible with all your existing code ● Create beautiful apps with support for Material Design, Dark theme, animations, and more Jetpack Compose https://developer.android.com/jetpack/compose

Slide 19

Slide 19 text

Compose Libraries runtime ui foundation material3 animation compiler material

Slide 20

Slide 20 text

Migrating from view system to Compose

Slide 21

Slide 21 text

You can incrementally migrate your app to Compose while still adding features to your app. Compose-View Interoperability Views Compose Compose Views

Slide 22

Slide 22 text

1. Build new feature screens with Compose 2. Identify reusable elements and start to create a library of common UI components 3. Incrementally migrate existing features to Compose screen by screen. (preferable write UI or screenshot testing to prevent breaking features) 4. Replace existing features one screen at a time, starting Low-risk, low-complexity screens 5. Compose-First to new app development 6. Use Compose for Wear OS, app widgets, and TV if your business requires Migration Strategy Compose

Slide 23

Slide 23 text

More about mobile app development…

Slide 24

Slide 24 text

● Web App Development: React, Angular, Vue, another JS Framework. ● Hybrid App Development: Ionic, Cordova ● Cross-platform App Development: Xamarin, React Native, Flutter, Kotlin Multiplatform, Compose Multiplatform ● Native App Development: Android Framework, iOS cocoatouch, Swift UI Alternatives to develop mobile apps… https://speakerdeck.com/erikjhordan_rey/technologies-to-develop-mobile-apps

Slide 25

Slide 25 text

Takeaways

Slide 26

Slide 26 text

● Choose the technology that allows you to advance faster and helps to achieve the objectives and expectations of the business with the resources you have ● Make an assessment of what technologies and experiences are mastered by team members. ● Analyze the budget you have, and the number of developers you can hire ● Look for similar applications in the industry and research what technologies they are using, can help you verify or question your decision ● Use the tools, libraries, and programming languages with your team knows and feels comfortable with, even better if your project benefited Takeaways

Slide 27

Slide 27 text

● https://developer.android.com/modern-android-development ● https://developer.android.com/jetpack/compose ● https://github.com/android/compose-samples ● https://www.youtube.com/@AndroidDevelopers ● https://developer.android.com/topic/architecture#recommended-app-arch ● https://developer.android.com/codelabs/jetpack-compose-migration#1 ● From Views to Compose: Where can I start? ● https://developer.android.com/jetpack/compose/adopt/for-large-teams ● https://speakerdeck.com/erikjhordan_rey/ Further Reading

Slide 28

Slide 28 text

Thank You Erik Jhordan Rey Google Developer Expert, Android @ErikJhordan_Rey [email protected]