自2008年9月22日谷歌發佈Android 1.0版本到前不久Android 12版本到發佈,Android已經陪伴咱們走過了12個年頭。能夠說,通過12年的打磨和沉澱,Android的技術體系已經很是的成熟了。好比說,一開始時框架不多,也沒有什麼規範,全部的代碼都是要本身寫,可是如今,咱們不多會關係這種基礎代碼,由於一些框架和工具的出現正在幫助開發者完成這方面的工做。javascript
不過,雖然咱們可使用這些框架和技術來達到快速迭代的目的,可是愈來愈雜的技術選型也讓Android開發者無從選擇,最終致使作出來的應用質量良莠不齊。長久以來,Android一直沒有制定一個規範來姐姐這一問題,只要可以實現功能,代碼怎麼編寫都是能夠的。雖然Android官方沒有推出開發標準,可是一些技術社區出於更高效的進行協同開發,逐漸引入了MVP和MVVM等應用開發架構,使用這些框架開發出來的應用,不管從項目質量仍是代碼的可讀性和可維護性來講,都更加出色,因而這些框架和技術逐漸流行起來。java
這些狀況被谷歌發現後,最終在Goole I/O 2018大會上推出了全新的Android Jetpack應用開發架構。或許稱Android Jetpack爲一個架構有點不許確,更多的地方將它稱爲Android應用開發的工具集,Jetpack是一套庫、工具和指南的集合,旨在幫助開發者更輕鬆地編寫優質應用。事實上,Android Jetpack所包含的內容是比較龐大的,主要由基礎組件、架構組件、行爲組件和UI組件構成,以下圖所示。
而且, 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等架構組件。android
Android Jetpack有以下一些特色:數據庫
1.加速開發
組件可單獨使用,也能夠協同工做,當使用kotlin語言特性時,能夠提升效率,而且具備很是好的向下兼容性。後端
2.消除樣板代碼
Android Jetpack能夠很方便的管理繁瑣的Activity(如後臺任務、導航和生命週期管理)。安全
3.構建高質量的強大應用
Android Jetpack組件圍繞現代化設計實踐構建而成,具備向後兼容性,能夠有效減小崩潰和內存泄漏。架構
Android Jetpack組件主要分爲四大類:app
Architecture指的是架構組件,旨在幫助開發者設計穩健、可測試且易維護的應用。架構組件能夠說是對應用開發幫助最大的組件,具體包含以下一些基礎組件。框架
下面是Google官方推薦的Android應用架構示意圖。
每一個組件僅依賴於其下一級的組件。例如,Activity 和 Fragment 僅依賴於視圖模型ViewModwl。存儲區是惟一依賴於其餘多個類的類,在本例中存儲區依賴於持久性數據模型和遠程後端數據源。而且,這些架構組件既能夠配合使用,也能夠單獨使用,能夠根據須要合理選擇。異步
Foundationy指的是基礎組件,提供最基礎的功能,例如向後兼容性、測試、安全、Kotlin 語言支持,並提供包括多個多個平臺開發的組件,具體包含以下。
-多Dex處理:爲具備多個Dex文件應用提供支持。
行爲組件能夠幫助開發者的應用與標準Android服務(如通知、權限、分享)進行集成,行爲組件包含。
界面組件主要提供各類輔助繪製界面的View類 和各類輔助組件,具體包含。
在項目中引入JetPack組件須要在項目build.gradle中添加google() 庫,默認狀況下會添加google() 庫的,以下所示。
allprojects { repositories { google() jcenter() } }
接下來,咱們就可使用具體的組件庫了,如咱們想引入Room持久化庫,那麼只須要app的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"
AndroidX是谷歌在 2018 I/O 大會上推出的用於替換android.support.library的 Android擴展庫,按照官方文檔說明,android.support.library在Android 28版本以後就再也不更新,將來的版本更新都在AndroidX中進行。不只如此,AAC(Android Architecture Components架構縮寫)中的組件也被 合併到AndroidX中,因此在使用JetPack組件時常常會看到AndroidX相關的包。
而且,爲了方便開發者遷移到AndroidX版本,谷歌官方給出了很詳細的遷移文檔(如何遷移到Android)。對於一些新組件和老組件,能夠參加下面的表。
若是你從未在Android項目中使用AndroidX,如今但願將項目遷移到AndroidX,那麼能夠在菜單欄中依次選擇【ReFactor】→【Migrate to AndroidX... 】便可將你的Android項目遷移到AndroidX,以下圖所示。
而後帶你【Migrate】按鈕確認,遷移完成以後,打開項目的gradle.properties文件,能夠看到以下腳本代碼。
android.useAndroidX=true //是否使用AndroidX android.enableJetifier=true //是否將第三方庫遷移到AndroidX
而後再打開Android項目的app的build.gradle文件,發現一些第三方庫也被AndroidX的庫所替換。
implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.2' implementation 'com.google.android.material:material:1.3.0-alpha03' ...
若是是新建項目,那麼默認會添加AndroidX支持。