Android 開發者學習路線(2020 版)
原文作者:
Gracker
原文連結:
https://androidperformance.com/2020/02/03/android-development-learning-path-2020-edition/
發表日期:
February 3rd 2020, 12:06:25 am
更新日期:
February 3rd 2020, 4:55:46 pm
Medium 上 @MindOrks 釋出了一篇 2020 年 Android 程式設計師的學習線路,鑑於一部分人看不到,我把這篇文章的內容結合自己的 2020 年的學習計劃,一起發出來,給大家一個參考
原文比較簡單,並沒有介紹為什麼要推薦這些,只是單純地列了一下知識點,我這邊針對每個知識點做一些簡單的介紹,有些知識點原文並沒有提到,我會根據自己的理解加上,僅供參考
這篇文章主要針對 Android 開發者,如果你是新手,那麼下面的內容可以幫助你找到學習的線路;如果你是老手,下面的 List 也可以幫助你查漏補缺。如果各位有什麼其他的建議,歡迎留言交流
Programming
Java
Java 是 Android App 開發預設的語言, Android Framework 也是預設使用 Java 語言,熟練掌握 Java 語言是 Android 開發者的必備技能。
希望深入 Java 虛擬機器的同學,也可以參考下面兩本書:
- 周志明的 《深入理解Java虛擬機器(第3版)》
Kotlin
Google 幾年前就開始走 “Kotlin First” 的路線,目前很多官方的文件和 Demo 都是使用 Kotlin 語言作為預設,Kotlin 的重要性不言而喻。
Google 官方也出了個 “Refactoring to Kotlin”的教程,其介紹如下:
此 Codelab 的適用物件為任何使用 Java 並考慮將其專案遷移到 Kotlin 的開發者。我們將從數個 Java 類入手,引導您使用 IDE 將它們轉換為 Kotlin。接著,我們會審視轉換後的程式碼,研究如何加以改善,使其更符合使用習慣,同時避免常見錯誤
Flutter
Flutter 作為 Google 的親兒子,其官方的扶持力度大家有目共睹。 Flutter 於幾天前釋出了 v1.12.13_hotfix.7 版本,修復了幾個比較嚴重的 Bug,如 Flutter 1.12 最新 hotfix 與 2020 路線計劃 這篇文章介紹所述,“v1.12.13+hotfix.7 版本主要在於解決了我比較關心的三個問題,包括: reportFullyDrawn 異常、華為手機上崩潰、游標和鍵盤輸入異常 這幾個問題。”.感興趣也可以看一下其 1 月 30 號釋出的 2020 Roadmap
Flutter 的發展大家可以看一下 Gityuan 的這一篇 Flutter 跨平臺演進及架構開篇,目前位元組跳動的多個 App 已經接入 Flutter 進行混合開發。個人對 2020 年 Flutter 不再持觀望態度,讀者可以根據自己的技術規劃決定是否開始學習
Android Studio
Android Studio IDE Overview
Android Studio 作為 Android 預設的開發者工具,目前的版本更新已經解決了諸多之前的效能問題,雖然目前對硬體資源的要求仍然比較高,但是一旦你接受了這個設定,真香預警!
AS 主要需要熟悉下面幾點
- AS 快捷鍵
- AS 外掛
- AS Profile (記憶體、CPU、IO、NetWork)
Project Structure — Java/Kotlin/Flutter, XML, .gradle files
熟悉各種專案的目錄結構,資原始檔、Gradle 檔案
Android 基礎知識
四大元件
這部分不必做過多的解釋,下面列出的就是大家熟悉的 Android 四大元件,Android 開發的基礎
- 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, and etc :這是開發中會遇到的常用的元件,許多複雜的佈局都是用簡單基礎的 View 組合而成
- ViewGroup - LinearLayout, RelativeLayout, FrameLayout:三大傳統佈局,適用於不同的場合
- ConstraintLayout : Google 新推的佈局,目前已經取代 RelativeLayout 成為預設的 App 佈局,具體使用可以參考 官方文件
Dynamic User Interface
- RecyclerView - 列表類的佈局首選控制元件,效能相對 ListView 要好一些,功能也比 ListView 要多一些
- ViewPager
- Spinner
CustomView
Android 預設的佈局很多時候都沒法滿足設計的需求,這時候就需要自定義 View,你需要掌握下面幾個知識點的使用
- Canvas
- Bitmap
- Paint
UI Resources
相比 HardCode,使用資原始檔會讓程式碼的可修改性更高
- Drawables
- String
- Styles
Fragments
許多人提倡 App 使用 單 Activity + 多個 Fragment 的組合,可見 Fragment 在開發中的重要性,但是 Fragment 的管理又是一門技術,Fragment 的坑,只能在實際開發中慢慢填平了,不過下面的 Fragment 基礎還是要牢固
- Fragment Lifecycle
- Fragment Manager
Support User Interface
這裡列的同樣是一些功能元件,需要知道這是什麼東西,基本的用法
- ProgressBar - 進度條
- Dialogs - 彈框
- Toast & Snackbar - 提示
Storage
App 開發不免要和檔案打交道,檔案的讀寫、儲存都是必不可少的,下面列出了幾種 Android 中儲存相關的知識點
- Shared Preferences - 適合儲存欄位
- File Systems - 檔案儲存
- Database — RoomDB - 資料庫儲存,RoomDB 是 Google 新推出的資料庫解決方案(在 AndroidX 中),具體使用可以參考 官方文件
Build
Android App 預設使用 Gradle 進行編譯,關於 Gradle 的使用必須要熟悉,以及如何區分開發版本和 Release 版本,以及國內特有的多渠道打包技術、以及 ASM 等
- Gradle
- Debug / Release Configuration
- 多渠道打包
- ASM
Threading
理解 Thread 非常重要,Android App 只有一個主執行緒,其餘的我們稱之為工作執行緒,我們的很多工作需要再工作執行緒和主執行緒直接切換,如何高效建立和釋放執行緒、執行緒池、執行緒間通訊、Message-Looper-Handler 模型這些知識點都要了熟於心,另外進階的話 Binder 通訊也是需要掌握的知識
- Threads
- Handler / Looper / Message / MessageQueue
- AIDL / Binder
Debugging
這裡列舉了一些 Debug 的基本手段,實際開發中遇到具體問題的時候一般都會用到,不過有的可能入手難度要高一些,需要花時間去掌握。Debug 工具除了下面這幾個還有很多
- Memory profiling - MAT,AS Memory Profile
- Logging - Log 包含非常豐富的資訊,可以幫助我們還原現場
- Systrace - Systrace 工具可以檢視一段時間內手機系統各個程式的執行狀態,具體使用可以參考我部落格的 Systrace 系列教程
- Exceptions - 各種異常,保證程式的健壯性
- Error Handling - Error 是必須要解決的問題,一般會導致 App 直接閃退,需要非常重視
Memory Leak
記憶體洩漏是一個很大的專題,包括 Java 內容洩漏和 Native 記憶體洩漏,涉及的知識點非常多,可以單獨拿出來做一個大的知識棧。一般來說, Java 記憶體洩漏會比較好檢測和修復,但是 Native 記憶體洩漏就會比較難。
- Detecting and Fixing Memory Leaks - 記憶體洩漏檢測和修復,是一個比較大的工程,可以參考 LeakCanary、Matrix 等開源工具
- Context - 使用不當會造成該釋放的物件沒有釋放造成記憶體洩漏
- Native Memory Leaks
3rd Party Library
經典的第三方類庫,可以大幅節約我們的開發時間
- Image Loading - Glide, Picasso
- Dependency Injection - Dagger
- Networking - Fast Android Networking Library, Retrofit
- MultiThreading - RxJava, Coroutines
Data Format
常見的一些資料儲存流格式
- JSON — GSON
- Flat Buffer
- Protocol Buffer
Android Jetpack
Jetpack 是 Google 推出的一套庫、工具和指南,可幫助開發者更輕鬆地編寫優質應用。這些元件可幫助您遵循最佳做法、讓您擺脫編寫樣板程式碼的工作並簡化複雜任務,以便您將精力集中放在所需的程式碼上。Jetpack 包含與平臺 API 解除捆綁的 androidx.* 軟體包庫。這意味著,它可以提供向後相容性,且比 Android 平臺的更新頻率更高,以此確保您始終可以獲取最新且最好的 Jetpack 元件版本。
- Foundation Components — AppCompat, Android KTX, Multidex
- Architecture Components — LiveData, ViewModel, DataBinding, Paging, Work Manager, Navigation
- Behaviour Components - Download Manager, Media Playback, Notification, Permissions, Preference, Sharing, Slice
- UI Component - Animation & Transition, Android Auto, Emoji, Palette, Android TV, Android Wear
Architecture
傳統的開發架構,沒有絕對的哪個好哪個不好,只有哪個適合哪個不適合,下面三種你都應該知道並有一定的瞭解
- MVVM - MVVM 是 Model-View-ViewModel的簡寫。它本質上就是 MVC 的改進版。MVVM 就是將其中的 View 的狀態和行為抽象化,讓我們將檢視 UI 和業務邏輯分開
- MVI ?
- MVP - MVP 從更早的 MVC 框架演變過來,與 MVC 有一定的相似性:Controller/Presenter 負責邏輯的處理,Model 提供資料,View 負責顯示
Unit Testing
- Local Unit Testing
- Instrumentation Testing
Firebase
Firebase 國內很多開發者用不到,這裡簡單看一下即可(說不定哪天國內就可以用了呢)
- FCM
- Crashlytics
- Analytics
- Remote Config
- App Indexing
- Dynamic Link
Security
安全方面接觸畢竟多的應該是加密、解密、混淆等,畢竟使用者資料安全大於一切,不重視這個歐盟會教你做人
- Encrypt / Decrypt
- Proguard
- R8
App Release
應用釋出相關的知識,國內還得加上多渠道打包、外掛化
- .keystore file
- App Bundle
- Playstore
- 多渠道打包
- 外掛化
Keep Learning and Improving
作為一個有進取心的 Android 開發者,擁有自己的技術棧和規劃非常重要,技術棧確保你有足夠的市場競爭力,從而形成護城河;
技術規劃則可以給你一個明確的學習目標。解除安裝抖音、微博、鬥魚、遊戲吧,做好 2020 年的規劃, Keep Learning and Improving ,共勉
如果你苦於沒有好的時間管理方法,可以參考這個影片 我是怎麼做周計劃 | 生產力提升 | 我的方法,這個是我熟悉的一個大佬的工作學習方法實踐,推薦給大家
凡是預則立,不預則廢,年度計劃太長,日計劃又太短。實踐下來發現以周為單位做時間管理(時間管理)最靠譜,既考慮了短期又考慮了長期,可以使自己長期堅持做某事,也有一定的時間長度用來甄有價值的事情。
如果你也不知道怎麼學習,這裡分享一份整理上述學習計劃中的相關學習合集,由於篇幅有限,這裡以圖片的形式給大家展示一部分。還有高階架構技術進階腦圖、Android開發面試專題資料,高階進階架構資料等等
幫助大家學習提升進階,也節省大家在網上搜尋資料的時間來學習,也可以分享給身邊好友一起學習。
學習PDF+原始碼筆記+Flutter+Kotlin+進階影片+學習路線
【Flutter從入門到進階學習影片】
【 Android學習PDF 】
【Android高階架構影片學習資源】
領取學習後更加是如虎添翼!進軍BATJ大廠等(備戰)!
現在都說網際網路寒冬,其實無非就是你上錯了車,且穿的少(技能),要是你上對車,自身技術能力夠強,公司換掉的代價大,怎麼可能會被裁掉,都是淘汰末端的業務Curd而已!
現如今市場上初級程式設計師氾濫,這套教程針對Android開發工程師1-6年的人員、正處於瓶頸期,想要突破自己漲薪的,進階Android中高階、架構師對你更是如魚得水,趕快領取吧!
【kotlin學習影片】【原始碼】等更多學習內容關注我【主頁簡介】或者【簡信我】檢視免費領取方式!
我們要學的東西有很多,而學到的知識點,都是錢(因為技術人員大部分情況是根據你的能力來定級、來發薪水的),所以不要猶豫,早學習早點升職加薪!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2681518/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 寫給Android開發者的最佳學習路線!Android
- Android 學習路線圖Android
- 2017 Web 開發者學習路線圖Web
- 2018 Web 開發者最佳學習路線Web
- Android學習進階路線導航線路(Android原始碼分享)Android原始碼
- 2020web前端學習路線Web前端
- Mars老師的Android學習基本路線Android
- 2020年最新Java學習教程路線圖Java
- Python 基礎學習路線圖【有PDF版】Python
- 前端學習路線前端
- Oracle學習路線Oracle
- Vue學習路線Vue
- JAVA學習路線Java
- java 學習路線Java
- javaweb學習路線JavaWeb
- ML學習路線
- PowerBI DAX學習路線圖 增強版(2018版)
- 2020 年最新前端學習路線圖彙總前端
- 一個iOS開發者學習Android之路iOSAndroid
- Java學習路線(完整詳細2019版)Java
- Flutter 學習路線圖Flutter
- SwiftUI 學習路線圖SwiftUI
- Java學習路線指南Java
- Vue學習路線圖Vue
- 前端完整學習路線前端
- Java Web 學習路線JavaWeb
- Java 學習路線圖Java
- Java-學習路線Java
- Hive學習路線圖Hive
- 【DBA】 Oracle 學習路線Oracle
- markdown之學習路線
- oracle學習路線圖Oracle
- Python學習路線Python
- JavaScript 學習路線圖JavaScript
- CSS 學習路線圖CSS
- API 學習路線圖API
- 前端系統學習——前端學習路線前端
- Java學習課件框架,12月最新Java學習路線圖(完整詳細版)Java框架