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

評(píng)論