本文首發於微信公衆號「後廠村碼農」前端
Android已經發展了11年,能夠說是比較成熟的技術了,一開始時框架不多,也沒有什麼規範,全部的代碼都是要本身寫,好比網絡請求,數據庫請求,數據解析等等。後來出現了一些框架來幫助開發者快速進行開發,好比XUtils、Volley、OKHttp、EventBus等,隨着框架愈來愈多,一個應用能夠有多種技術選型,直接致使應用開發愈來愈不規範,致使作出來的應用質量良莠不齊,這顯然不是谷歌想看到的。谷歌隨後推出了MVP和MVVM相關的官方例子,效果很通常,並且覆蓋面只是在架構上,Goole I/O 2018大會上推出的Android Jetpack有望解決以上的問題。java
Jetpack並非一個框架或者組件,它是一套庫、工具和指南的集合,可幫助開發者更輕鬆地編寫優質應用。這些組件可幫助開發者遵循最佳作法、擺脫編寫樣板代碼的工做並簡化複雜任務,以便將精力集中放在所需的代碼上。 Android Jetpack中的不少組件並不都是新開發的,而是很早就有了,好比在Goole I/O 2017大會時推出了 Android Architecture Component(AAC),它包括了LifeCycle、LiveData、ViewModel、Room。在Goole I/O 2018大會上, 用AndroidX替代了Android Support Library,並在Android Architecture Component的基礎上發佈了Android Jetpack,AndroidX也是屬於Android Jetpack。android
Jetpack主要特性有如下三點: 1.加速開發 組件可單獨使用,也能夠協同工做,當使用kotlin語言特性時,能夠提升效率。程序員
2.消除樣板代碼 Android Jetpack可管理繁瑣的Activity(如後臺任務、導航和生命週期管理)。數據庫
3.構建高質量的強大應用 Android Jetpack組件圍繞現代化設計實踐構建而成,具備向後兼容性,能夠減小崩潰和內存泄漏。安全
下圖是Jetpack的分類。 微信
谷歌仍舊不斷的完善Android Jetpack,截至到2019年8月已經有不少新加的組件並無顯示在上圖中,好比CameraX等。Android Jetpack分類有4種,分別是Architecture、Foundationy、Behavior、UI,下面分別介紹下。Architecture指的是架構組件,幫助開發者設計穩健、可測試且易維護的應用。架構組件能夠說是對應用開發幫助最大的組件,本系列也是圍繞着架構組件進行講解。網絡
DataBinding:以聲明方式將可觀察數據綁定到界面元素,一般和ViewModel配合使用。 Lifecycle:用於管理Activity和Fragment的生命週期,可幫助開發者生成更易於維護的輕量級代碼。 LiveData: 在底層數據庫更改時通知視圖。它是一個可觀察的數據持有者,與常規observable不一樣,LiveData是生命週期感知的。 Navigation:處理應用內導航。 Paging:能夠幫助開發者一次加載和顯示小塊數據,按需加載部分數據可減小網絡帶寬和系統資源的使用。 Room:友好、流暢的訪問SQLite數據庫。它在SQLite的基礎上提供了一個抽象層,容許更強大的數據庫訪問。 ViewModel: 以生命週期的方式管理界面相關的數據,一般和DataBinding配合使用,爲開發者實現MVVM架構提供了強有力的支持。 WorkManager: 管理Android的後臺的做業,即便應用程序退出或設備從新啓動也能夠運行可延遲的異步任務。架構
官方推薦的Android應用架構以下圖所示。 框架
這些架構組件既能夠配合使用,也能夠單獨使用,這裏建議仍是儘可能按照官方推薦的來。
基礎組件提供橫向功能,例如向後兼容性、測試、安全、Kotlin 語言支持,幷包括多個多個平臺開發的組件。
Android KTX:優化了供Kotlin使用的Jetpack和Android平臺API。幫助開發者以更簡潔、更愉悅、更慣用的方式使用Kotlin進行Android開發。 AppCompat:幫助較低版本的Android系統進行兼容。 Auto: 開發Android Auto應用的組件,提供了適用於全部車輛的標準化界面和用戶交互。 檢測:從AndroidStudio中快速檢測基於Kotlin或Java的代碼。 多Dex處理:爲具備多個Dex文件應用提供支持。 安全:安全的讀寫加密文件和共享偏好設置。 測試:用於單元和運行時界面測試的Android 測試框架。 TV: 構建可以讓用戶在大屏幕上體驗沉浸式內容的應用。 Wear OS:開發Wear應用的組件。
行爲組件可幫助開發者的應用與標準Android服務(如通知、權限、分享)相集成。
CameraX:幫助開發簡化相機應用的開發工做。它提供一致且易於使用的界面,適用於大多數Android。 設備,並可向後兼容至Android 5.0(API 21)。 DownloadManager:處理長時間運行的HTTP下載的系統服務。 媒體和播放:用於媒體播放和路由(包括Google Cast)的向後兼容API。 通知:提供向後兼容的通知API,支持Wear和Auto。 權限:用於檢查和請求應用權限的兼容性API。 設置:建立交互式設置,建議使用AndroidX Preference Library庫將用戶可配置設置集成到應用中。 分享操做:能夠更輕鬆地實現友好的用戶分享操做。 切片:切片是一種UI模板,建立可在應用外部顯示應用數據的靈活界面元素。
Animation and Transition:該框架包含用於常見效果的內置動畫,並容許開發者建立自定義動畫和生命週期回調。 Emoji Compatibility:即使用戶沒有更新Android系統也能夠獲取最新的表情符號。 Fragment:組件化界面的基本單位。 佈局:用XML中聲明UI元素或者在代碼中實例化UI元素。 調色板:從調色板中提取出有用的信息。
在項目build.gradle中添加google() 庫,以下所示。
allprojects {
repositories {
google()
jcenter()
}
}
複製代碼
若是想引入Room,能夠在模塊build.gradle中這麼寫:
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1 "
androidTestImplementation "android.arch.persistence.room:testing:1.1.1"
複製代碼
這篇文章內部很少,旨在讓你們瞭解Android Jetpack是什麼,包括什麼,如何引用,從下一篇開始,就開始學習Android Jetpack的架構組件。
這裏不只分享大前端、Android、Java等技術,還有程序員成長類文章。