前言
作為一名Android老司機,什么Square全家桶,Glide, 各種Bus, MVP,MVVM等等跟Android開發(fā)相關的主流的名詞那都是如數家珍 。
很多時候我們吐槽,Android碎片化嚴重,Google爸爸又天高皇帝遠,對國內的Android生態(tài)又心有余而力不足。國內的Android開發(fā)者很長一段時間也基本處于散養(yǎng)的狀態(tài)。項目的庫基本都是用上面說到的主流庫,自己動手,豐衣足食。
可能大部分開發(fā)者們更focus的是當下的某個技術點,而缺乏從整個架構戰(zhàn)略的方向去看待圈內的整個生態(tài)。
于是搜集了這方面的資料并做出總結,讓閱讀本文的人大體了解這是什么?為什么有這個?這個東西主要包含了哪些功能?都解決了什么問題?以及學習成本等問題。
1.相關歷史背景
官方JetPack介紹(科學上網)
大體上,JetPack是Google推出的一些庫的集合。是Android基礎支持庫SDK以外的部分。包含了組件、工具、架構方案等...開發(fā)者可以自主按需選擇接入具體的哪個庫。
從Goole IO 2017開始。Google 開始推出Architecture Component, ORM庫Room, 用戶生命周期管理的ViewModel/ListData.
Goole IO 2018將Support lib 更名為androidx. 將許多Google認為是正確的方案和實踐集中起來。以高效的開發(fā)Android APP.
以上種種,現在統(tǒng)稱為JetPack. 其最核心的出發(fā)點就是幫助開發(fā)者快速構建出穩(wěn)定、高性能、測試友好同時向后兼容的APP。
2.組成部分
前面講到過,JetPack是一系列庫和工具的集合,它更多是Google的一個提出的一個概念,或者說態(tài)度。
并非所有的東西都是每年在IO大會上新推出的,它也包含了對現有基礎庫的整理和擴展。在大部分項目中其實我們都有用到JetPack的內容,也許你只是不知道而已。讓我們以上帝視角來看看整個JetPack除了你熟悉的部分,還有哪些是你不熟悉但是聽過的內容??纯此麄兌寄茏鲂┦裁词虑?。
對于一些較少接觸到的一些庫我會提供一些第三方鏈接(CSDN、簡書、掘金)作為拓展閱讀,參考和學習。
從官方的介紹來看。JetPack總體包含四部分內容:
基礎
AppCompat : 使得支持較低的Android版本。從以前繼承Activity到現在繼承AppCompatActivity 就是屬于這一部分。
Android KTX: Kotlin的擴展支持庫
Multidex: 多dex文件支持
Test: 測試支持庫
架構
Data Binding: MVVM的一種實踐
Lifecycles: 管理你的 Activity 和 Fragment 生命周期
LiveData: 通過觀察者模式感知數據變化,類比RxJava
Navigation: 處理Fragment導航相關邏輯
Paging: 分頁數據加載方案
Room: 官方ORM庫
ViewModel: 通過數據驅動V視圖發(fā)生改變
WorkManager: 管理后臺任務
行為
Media app: 多媒體播放和一些向后兼容的API。主要包含MediaPalyer和ExoPlayer
Notifications: 提供向后兼容的通知 API,支持 Wear 和 Auto
Permissions: 權限管理,這個應該都接觸過。用于檢查和請求應用權限
Settings: Preference相關API?;久總€應用都會用到
Share Action: 提供分享操作。這塊在國內使用的不多,都是自己封裝或者采用第三方方案。
Slices: 可以讓應用通過外部(其他APP)顯示APP界面(通過設備自帶的搜索,語音助手等)
界面
界面部分所包含的東西基本是我們接觸的最多的了:
Animations and Transitions: 動畫,界面轉場等
Auto: 針對車輛的標準化界面和模式。這方面實在接觸的少,不感妄加評論。
Emoji: Emoji 相關。這個...同上面的Auto吧
Fragment: 基礎概念
Layout: 基礎概念
Palette-Colors: 調色板。接觸的不多
TV: Android TV 開發(fā)相關
Wear: 可穿戴設備(目前主要是手表)開發(fā)相關
3.如何看待JetPack?
前文說過了,JetPack更多是一種概念和態(tài)度。相當于Google把自己的Android生態(tài)重新整理了一番。確立了Android未來的版圖和大方向。
JetPack里目前包含的內容,未來也會是Google大力維護和擴展的內容。對應開發(fā)者來說也是值得去學習使用的且相對無后顧之憂的。JetPack里沒有的,除開一些優(yōu)秀的第三方庫,未來應該也會慢慢被新的API替代,逐漸邊緣化,直至打上Deprecate注解。
以當下的環(huán)境來說,要開發(fā)出一個完全擺脫JetPack的APP是很難做到的。但是反過來講JetPack也遠遠沒有到成熟的地步,目前也還存在亟待解決的問題,未來可以做的事情還有很多。
關于使用的話,并不是所有庫都建議使用,因為目前還有很多庫在alpha版本。但是作為學習還是很有必要的,能給你日常的開發(fā)中多提供一些思路,這些是無可厚非的。
總的來說,JetPack的推廣對廣大開發(fā)者而言是利遠遠大于弊的。
最后,感謝你閱讀到這里。但愿這篇文章能讓你對Android有一個新的視角和看法。
-
Android
+關注
關注
12文章
3937瀏覽量
127454
發(fā)布評論請先 登錄
相關推薦
評論