Android 開發者學習路線

Android 開發者學習路線


原文作者: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版)》
Android 開發者學習路線

  • 鄧老師的 《深入理解Android Java 虛擬機 ART》
Android 開發者學習路線

Kotlin

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

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

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

Android 開發者學習路線

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 開發者學習路線

【 Android學習PDF 】


Android 開發者學習路線

【Android高級架構視頻學習資源】


Android 開發者學習路線

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

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

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

【kotlin學習視頻】【源碼】等更多學習內容私信【安卓】查看免費領取方式!

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


分享到:


相關文章: