On Medium, @MindOrks published a 2020 Android Developer Learning Path. Given that some readers may have difficulty accessing the original content, I am sharing it here combined with my own 2020 learning plan for your reference.
The original article is quite simple, mostly listing knowledge points without much explanation. I have added brief introductions for each point and included some additional topics based on my own understanding. This is for your reference only.
This article is primarily for Android developers. If you are a beginner, it will help you find a learning path. If you are an experienced developer, it can help you identify gaps in your knowledge. If you have any other suggestions, feel free to leave a message.
Programming
Java
Java is the default language for Android App development and the Android Framework. Mastering Java is a mandatory skill for Android developers.
For those who want to dive deeper into the Java Virtual Machine, I recommend:
- Zhou Zhiming’s “Understanding the Java Virtual Machine (3rd Edition)”
- Deng Fanheng’s “Understanding Android Java VM: ART”
Kotlin
Google shifted to a “Kotlin First” strategy several years ago. Most official documentation and demos now use Kotlin by default. Its importance is self-evident.
Google also provides a “Refactoring to Kotlin” tutorial:
This codelab is for any developer who uses Java and is considering migrating their project to Kotlin. We will start with several Java classes and guide you through converting them to Kotlin using the IDE. Then, we look at the converted code and research how to improve it, make it more idiomatic, and avoid common pitfalls.
Flutter
As Google’s “favorite son,” Flutter receives significant official support. Flutter recently released v1.12.13_hotfix.7, which fixed several critical bugs. As mentioned in Flutter 1.12 latest hotfix and 2020 Roadmap: “The v1.12.13+hotfix.7 release mainly resolves three major issues: reportFullyDrawn exception, crashes on Huawei phones, and cursor/keyboard input anomalies.” You can also check out their 2020 Roadmap released on January 30th.
For the development of Flutter, you can refer to Gityuan’s Flutter Cross-Platform Evolution and Architecture. Currently, several Bytedance apps have integrated Flutter for hybrid development. Personally, I believe it’s no longer a time to wait and see on Flutter in 2020; readers can decide whether to start learning based on their own technical plans.
Android Studio
Android Studio IDE Overview
As the default Android development tool, recent updates have resolved many performance issues. While hardware requirements remain high, it is a very powerful tool once you get used to it.
Key areas to master:
- AS Shortcuts
- AS Plugins
- AS Profiler (Memory, CPU, IO, Network)
Project Structure — Java/Kotlin/Flutter, XML, .gradle files
Familiarize yourself with project directory structures, resource files, and Gradle files.
Android Basics
Core Components
These are the foundations of Android development:
- Activity — Activity Lifecycle, Tasks & Back Stack
- Service
- Broadcast Receiver
- Content Provider
Intents
- Types of Intent - Implicit, Explicit
- Intent Filter
Static User Interface
- View — Button, ImageView, TextView, EditText, etc.: Common components used to build complex layouts.
- ViewGroup - LinearLayout, RelativeLayout, FrameLayout: The three traditional layouts.
- ConstraintLayout: Google’s recommended layout, which has largely replaced RelativeLayout as the default for apps. Refer to the Official Documentation.
Dynamic User Interface
- RecyclerView - The preferred widget for lists, offering better performance and more features than ListView.
- ViewPager
- Spinner
CustomView
When default layouts don’t meet design requirements, you need to customize Views. Master the following:
- Canvas
- Bitmap
- Paint
UI Resources
Using resource files instead of hardcoding improves maintainability.
- Drawables
- Strings
- Styles
Fragments
Many advocate for a Single Activity + Multiple Fragments architecture. Managing Fragments is an art in itself, and you’ll encounter various “gotchas” in practice.
- Fragment Lifecycle
- Fragment Manager
Support User Interface
Common functional components:
- ProgressBar
- Dialogs
- Toast & Snackbar
Storage
App development inevitably involves file handling.
- Shared Preferences - Best for key-value pairs.
- File Systems - File-based storage.
- Database — RoomDB - Google’s recommended database solution (part of AndroidX). Refer to the Official Documentation.
Build
Android apps use Gradle by default. Familiarize yourself with Gradle, build configurations (Debug/Release), multi-channel packaging, and bytecode manipulation tools like ASM.
- Gradle
- Debug / Release Configuration
- Multi-channel Packaging
- ASM
Threading
Understanding Threading is crucial. Efficiently switching between the main thread and worker threads is key.
- Threads
- Handler / Looper / Message / MessageQueue
- AIDL / Binder (for inter-process communication)
Debugging
Essential debugging tools and techniques:
- Memory profiling - MAT, AS Memory Profiler
- Logging - Logs provide rich information to reconstruct issues.
- Systrace - A tool to view the running state of system processes. Refer to my Systrace Series.
- Exceptions - Handling various exceptions to ensure robustness.
- Error Handling - Resolving Errors that cause app crashes.
Memory Leak
A major topic involving both Java and Native memory leaks. Java leaks are generally easier to detect and fix with tools like LeakCanary or Matrix, while Native leaks can be more challenging.
- Detecting and Fixing Memory Leaks
- Context - Improper use of Context is a common cause of leaks.
- Native Memory Leaks
3rd Party Libraries
Classic libraries that significantly save development time:
- Image Loading - Glide, Picasso
- Dependency Injection - Dagger
- Networking - Retrofit, OkHttp
- MultiThreading - RxJava, Coroutines
Data Formats
Common data serialization formats:
- JSON — GSON, Moshi
- FlatBuffers
- Protocol Buffers (Protobuf)
Android Jetpack
Jetpack is a suite of libraries, tools, and guidance to help developers write high-quality apps more easily.
- Foundation Components — AppCompat, Android KTX, Multidex
- Architecture Components — LiveData, ViewModel, DataBinding, Paging, WorkManager, Navigation
- Behavior Components - DownloadManager, MediaPlayback, Notifications, Permissions, Preferences, Sharing, Slices
- UI Components - Animation & Transition, Emoji, Palette
Architecture
Understand the common architectural patterns and choose what fits your project:
- MVVM - Model-View-ViewModel, separates UI state and logic.
- MVI - Model-View-Intent.
- MVP - Model-View-Presenter, where the Presenter handles logic and the Model provides data.
Testing
- Local Unit Testing
- Instrumentation Testing
Firebase
Useful for global apps:
- FCM (Firebase Cloud Messaging)
- Crashlytics
- Analytics
- Remote Config
- App Indexing
- Dynamic Links
Security
Security is paramount, especially regarding user data.
- Encryption / Decryption
- Proguard
- R8
App Release
- .keystore files
- App Bundle
- Play Store
- Multi-channel Packaging
- Pluginization
Keep Learning and Improving
As an aspiring Android developer, having your own technical stack and roadmap is vital for competitiveness. Set clear goals for 2020. Keep Learning and Improving!
If you are looking for better time management, I recommend this video on How I Make Weekly Plans | Productivity | My Method.
“Plan ahead, or fail.” Annual plans are too long, and daily plans are too short. Managing time by the week is often the most practical way to maintain consistency over the long term.
Other Links
For further discussion, you can also find this article on:
Zhihu - Android Developer Learning Path (2020 Edition)
About Me && Blog
Below is my personal introduction and related links. I look forward to exchanging ideas with fellow professionals. “When three walk together, one can always be my teacher!”
- Blogger Intro: Includes personal WeChat and WeChat group links.
- Blog Content Navigation: A guide for my blog content.
- Curated Excellent Blog Articles - Android Performance Optimization Must-Knows: Welcome to recommend projects/articles.
- Android Performance Optimization Knowledge Planet: Welcome to join and thank you for your support~
One walks faster alone, but a group walks further together.
