Android 開發者學習路線(2020 版)

yilian發表於2020-03-19
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 虛擬機器的同學,也可以參考下面兩本書:

Android 開發者學習路線(2020 版)
Android 開發者學習路線(2020 版)

Kotlin

Google 幾年前就開始走 “Kotlin First” 的路線,目前很多官方的文件和 Demo 都是使用 Kotlin 語言作為預設,Kotlin 的重要性不言而喻。

Google 官方也出了個 “Refactoring to Kotlin”的教程,其介紹如下:

此 Codelab 的適用物件為任何使用 Java 並考慮將其專案遷移到 Kotlin 的開發者。我們將從數個 Java 類入手,引導您使用 IDE 將它們轉換為 Kotlin。接著,我們會審視轉換後的程式碼,研究如何加以改善,使其更符合使用習慣,同時避免常見錯誤

Android 開發者學習路線(2020 版)

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 主要需要熟悉下面幾點

  1. AS 快捷鍵
  2. AS 外掛
  3. AS Profile (記憶體、CPU、IO、NetWork)

Project Structure — Java/Kotlin/Flutter, XML, .gradle files

熟悉各種專案的目錄結構,資原始檔、Gradle 檔案

Android 基礎知識

四大元件

這部分不必做過多的解釋,下面列出的就是大家熟悉的 Android 四大元件,Android 開發的基礎

  1. Activity — Activity Lifecycle, Tasks & Back Stack
  2. Service
  3. Broadcast Receiver
  4. Content Provider

Intents

  1. Types of Intent - Implicit, Explicit
  2. Intent Filter

Static User Interface

  1. View — Button, ImageView, TextView, EditText, and etc :這是開發中會遇到的常用的元件,許多複雜的佈局都是用簡單基礎的 View 組合而成
  2. ViewGroup - LinearLayout, RelativeLayout, FrameLayout:三大傳統佈局,適用於不同的場合
  3. ConstraintLayout : Google 新推的佈局,目前已經取代 RelativeLayout 成為預設的 App 佈局,具體使用可以參考 官方文件

Dynamic User Interface

  1. RecyclerView - 列表類的佈局首選控制元件,效能相對 ListView 要好一些,功能也比 ListView 要多一些
  2. ViewPager
  3. Spinner

CustomView

Android 預設的佈局很多時候都沒法滿足設計的需求,這時候就需要自定義 View,你需要掌握下面幾個知識點的使用

  1. Canvas
  2. Bitmap
  3. Paint

UI Resources

相比 HardCode,使用資原始檔會讓程式碼的可修改性更高

  1. Drawables
  2. String
  3. Styles

Fragments

許多人提倡 App 使用 單 Activity + 多個 Fragment 的組合,可見 Fragment 在開發中的重要性,但是 Fragment 的管理又是一門技術,Fragment 的坑,只能在實際開發中慢慢填平了,不過下面的 Fragment 基礎還是要牢固

  1. Fragment Lifecycle
  2. Fragment Manager

Support User Interface

這裡列的同樣是一些功能元件,需要知道這是什麼東西,基本的用法

  1. ProgressBar - 進度條
  2. Dialogs - 彈框
  3. Toast & Snackbar - 提示

Storage

App 開發不免要和檔案打交道,檔案的讀寫、儲存都是必不可少的,下面列出了幾種 Android 中儲存相關的知識點

  1. Shared Preferences - 適合儲存欄位
  2. File Systems - 檔案儲存
  3. Database — RoomDB - 資料庫儲存,RoomDB 是 Google 新推出的資料庫解決方案(在 AndroidX 中),具體使用可以參考 官方文件

Build

Android App 預設使用 Gradle 進行編譯,關於 Gradle 的使用必須要熟悉,以及如何區分開發版本和 Release 版本,以及國內特有的多渠道打包技術、以及 ASM 等

  1. Gradle
  2. Debug / Release Configuration
  3. 多渠道打包
  4. ASM

Threading

理解 Thread 非常重要,Android App 只有一個主執行緒,其餘的我們稱之為工作執行緒,我們的很多工作需要再工作執行緒和主執行緒直接切換,如何高效建立和釋放執行緒、執行緒池、執行緒間通訊、Message-Looper-Handler 模型這些知識點都要了熟於心,另外進階的話 Binder 通訊也是需要掌握的知識

  1. Threads
  2. Handler / Looper / Message / MessageQueue
  3. AIDL / Binder

Debugging

這裡列舉了一些 Debug 的基本手段,實際開發中遇到具體問題的時候一般都會用到,不過有的可能入手難度要高一些,需要花時間去掌握。Debug 工具除了下面這幾個還有很多

  1. Memory profiling - MAT,AS Memory Profile
  2. Logging - Log 包含非常豐富的資訊,可以幫助我們還原現場
  3. Systrace - Systrace 工具可以檢視一段時間內手機系統各個程式的執行狀態,具體使用可以參考我部落格的  Systrace 系列教程
  4. Exceptions - 各種異常,保證程式的健壯性
  5. Error Handling - Error 是必須要解決的問題,一般會導致 App 直接閃退,需要非常重視

Memory Leak

記憶體洩漏是一個很大的專題,包括 Java 內容洩漏和 Native 記憶體洩漏,涉及的知識點非常多,可以單獨拿出來做一個大的知識棧。一般來說, Java 記憶體洩漏會比較好檢測和修復,但是 Native 記憶體洩漏就會比較難。

  1. Detecting and Fixing Memory Leaks - 記憶體洩漏檢測和修復,是一個比較大的工程,可以參考 LeakCanary、Matrix 等開源工具
  2. Context - 使用不當會造成該釋放的物件沒有釋放造成記憶體洩漏
  3. Native Memory Leaks

3rd Party Library

經典的第三方類庫,可以大幅節約我們的開發時間

  1. Image Loading - Glide, Picasso
  2. Dependency Injection - Dagger
  3. Networking - Fast Android Networking Library, Retrofit
  4. MultiThreading - RxJava, Coroutines

Data Format

常見的一些資料儲存流格式

  1. JSON — GSON
  2. Flat Buffer
  3. Protocol Buffer

Android Jetpack

Jetpack 是 Google 推出的一套庫、工具和指南,可幫助開發者更輕鬆地編寫優質應用。這些元件可幫助您遵循最佳做法、讓您擺脫編寫樣板程式碼的工作並簡化複雜任務,以便您將精力集中放在所需的程式碼上。Jetpack 包含與平臺 API 解除捆綁的 androidx.* 軟體包庫。這意味著,它可以提供向後相容性,且比 Android 平臺的更新頻率更高,以此確保您始終可以獲取最新且最好的 Jetpack 元件版本。

  1. Foundation Components — AppCompat, Android KTX, Multidex
  2. Architecture Components — LiveData, ViewModel, DataBinding, Paging, Work Manager, Navigation
  3. Behaviour Components - Download Manager, Media Playback, Notification, Permissions, Preference, Sharing, Slice
  4. UI Component - Animation & Transition, Android Auto, Emoji, Palette, Android TV, Android Wear

Architecture

傳統的開發架構,沒有絕對的哪個好哪個不好,只有哪個適合哪個不適合,下面三種你都應該知道並有一定的瞭解

  1. MVVM - MVVM 是 Model-View-ViewModel的簡寫。它本質上就是 MVC 的改進版。MVVM 就是將其中的 View 的狀態和行為抽象化,讓我們將檢視 UI 和業務邏輯分開
  2. MVI ?
  3. MVP - MVP 從更早的 MVC 框架演變過來,與 MVC 有一定的相似性:Controller/Presenter 負責邏輯的處理,Model 提供資料,View 負責顯示

Unit Testing

  1. Local Unit Testing
  2. Instrumentation Testing

Firebase

Firebase 國內很多開發者用不到,這裡簡單看一下即可(說不定哪天國內就可以用了呢)

  1. FCM
  2. Crashlytics
  3. Analytics
  4. Remote Config
  5. App Indexing
  6. Dynamic Link

Security

安全方面接觸畢竟多的應該是加密、解密、混淆等,畢竟使用者資料安全大於一切,不重視這個歐盟會教你做人

  1. Encrypt / Decrypt
  2. Proguard
  3. R8

App Release

應用釋出相關的知識,國內還得加上多渠道打包、外掛化

  1. .keystore file
  2. App Bundle
  3. Playstore
  4. 多渠道打包
  5. 外掛化

Keep Learning and Improving

作為一個有進取心的 Android 開發者,擁有自己的技術棧和規劃非常重要,技術棧確保你有足夠的市場競爭力,從而形成護城河;

技術規劃則可以給你一個明確的學習目標。解除安裝抖音、微博、鬥魚、遊戲吧,做好 2020 年的規劃, Keep Learning and Improving ,共勉

如果你苦於沒有好的時間管理方法,可以參考這個影片 我是怎麼做周計劃 | 生產力提升 | 我的方法,這個是我熟悉的一個大佬的工作學習方法實踐,推薦給大家

凡是預則立,不預則廢,年度計劃太長,日計劃又太短。實踐下來發現以周為單位做時間管理(時間管理)最靠譜,既考慮了短期又考慮了長期,可以使自己長期堅持做某事,也有一定的時間長度用來甄有價值的事情。

如果你也不知道怎麼學習,這裡分享一份整理上述學習計劃中的相關學習合集,由於篇幅有限,這裡以圖片的形式給大家展示一部分。還有高階架構技術進階腦圖、Android開發面試專題資料,高階進階架構資料等等

幫助大家學習提升進階,也節省大家在網上搜尋資料的時間來學習,也可以分享給身邊好友一起學習。

學習PDF+原始碼筆記+Flutter+Kotlin+進階影片+學習路線

【Flutter從入門到進階學習影片】


Android 開發者學習路線(2020 版)

【 Android學習PDF 】


Android 開發者學習路線(2020 版)

【Android高階架構影片學習資源】


Android 開發者學習路線(2020 版)

領取學習後更加是如虎添翼!進軍BATJ大廠等(備戰)!

現在都說網際網路寒冬,其實無非就是你上錯了車,且穿的少(技能),要是你上對車,自身技術能力夠強,公司換掉的代價大,怎麼可能會被裁掉,都是淘汰末端的業務Curd而已!

現如今市場上初級程式設計師氾濫,這套教程針對Android開發工程師1-6年的人員、正處於瓶頸期,想要突破自己漲薪的,進階Android中高階、架構師對你更是如魚得水,趕快領取吧!

【kotlin學習影片】【原始碼】等更多學習內容關注我【主頁簡介】或者【簡信我】檢視免費領取方式!

我們要學的東西有很多,而學到的知識點,都是錢(因為技術人員大部分情況是根據你的能力來定級、來發薪水的),所以不要猶豫,早學習早點升職加薪!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2681518/,如需轉載,請註明出處,否則將追究法律責任。

相關文章