Android Jetpack 是現(xiàn)代 Android 開(kāi)發(fā) (Modern Android Development) 的關(guān)鍵組成支柱。Android Jetpack 套件包含超 100 個(gè)庫(kù)、工具及指南,可幫助開(kāi)發(fā)者遵循最佳實(shí)踐、減少樣板代碼,并編寫(xiě)可在各種 Android 版本和設(shè)備中一致運(yùn)行的代碼,以便您可以專注于為應(yīng)用構(gòu)建特色功能。Google Play 上的大多數(shù)應(yīng)用都使用 Jetpack 進(jìn)行開(kāi)發(fā),事實(shí)上,在排行榜前 1,000 的應(yīng)用中,超過(guò) 90% 的應(yīng)用都使用了 Jetpack。
- Android Jetpackhttps://developer.android.google.cn/jetpack
- 現(xiàn)代 Android 開(kāi)發(fā)https://developer.android.google.cn/modern-android-development
下面我們將介紹 Jetpack 三大主要領(lǐng)域的近期更新亮點(diǎn):
- 架構(gòu)庫(kù)及相關(guān)指南
-
應(yīng)用性能優(yōu)化
-
界面庫(kù)及相關(guān)指南
最后,我們會(huì)在本文結(jié)尾部分介紹一些其他關(guān)鍵更新。
架構(gòu)庫(kù)及相關(guān)指南
應(yīng)用架構(gòu)庫(kù)和組件可確保應(yīng)用的穩(wěn)健性、可測(cè)試性及可維護(hù)性。
數(shù)據(jù)持久化
大多數(shù)應(yīng)用都需要持久化本地狀態(tài),無(wú)論是緩存結(jié)果、管理用戶輸入數(shù)據(jù)的本地列表,還是為界面中返回的數(shù)據(jù)提供支持。Room 是我們推薦的數(shù)據(jù)持久化層,它在 SQLite 的基礎(chǔ)上提供了一個(gè)抽象層,從而提高了平臺(tái)的易用性和安全性。
-
Room
https://developer.android.google.cn/jetpack/androidx/releases/room
在 Room 中,我們引入了許多全新功能,比如新增 Upsert 操作 (如果不存在唯一性沖突,Upsert 會(huì)嘗試插入實(shí)體;如果存在沖突,Upsert 則會(huì)嘗試更新實(shí)體),以及支持在 KSP 中使用 Kotlin 值類。這些新功能可以在 Room 2.6-alpha 版本中使用,其中所有的庫(kù)源代碼均以 Kotlin 編寫(xiě),同時(shí)支持 Java 編程語(yǔ)言和 Kotlin 代碼生成。
-
Room 2.6-alpha 版本
https://developer.android.google.cn/jetpack/androidx/releases/room#2.6.0-alpha01
使用 WorkManager 管理任務(wù)
借助 WorkManager 庫(kù),您可以輕松調(diào)度必須可靠運(yùn)行的可延期異步任務(wù),例如上傳備份或分析。使用這些 API,您可以創(chuàng)建任務(wù)并將其提交給 WorkManager,以便在滿足工作約束條件時(shí)運(yùn)行。 現(xiàn)在,您可以借助 WorkManager 在您已將 WorkRequest 加入隊(duì)列的情況下對(duì)其進(jìn)行更新。在經(jīng)常更改約束條件或需要實(shí)時(shí)更新工作器的大型應(yīng)用中,這種操作通常十分必要。自 WorkManager 2.8.0 版起,您可以使用 updateWork() API 來(lái)實(shí)現(xiàn)這一目的,而無(wú)需進(jìn)行手動(dòng)取消并將新的 WorkRequest 加入隊(duì)列的步驟。這大大簡(jiǎn)化了開(kāi)發(fā)過(guò)程。
-
WorkManager 2.8.0 版
https://developer.android.google.cn/jetpack/androidx/releases/work
DataStore
DataStore 庫(kù)是一個(gè)強(qiáng)大的數(shù)據(jù)存儲(chǔ)解決方案,可解決關(guān)于 SharedPreferences 的問(wèn)題,并提供基于新式協(xié)程的 API。
-
DataStore
https://developer.android.google.cn/jetpack/androidx/releases/datastore
在 DataStore 1.1 Alpha 版中,我們?cè)黾恿艘粋€(gè)備受期待的功能: 多進(jìn)程支持。您可借此從多個(gè)進(jìn)程訪問(wèn) DataStore,同時(shí)獲得進(jìn)程之間的數(shù)據(jù)一致性保證。我們還推出了其他功能,包括新的存儲(chǔ)接口,可以切換 DataStore 的底層存儲(chǔ)機(jī)制 (我們已提供適用于 java.io 和 okio 的實(shí)現(xiàn))。此外,我們還增加了對(duì) Kotlin 多平臺(tái)的支持。
-
DataStore 1.1 Alpha 版
https://developer.android.google.cn/jetpack/androidx/releases/datastore#1.1.0-alpha04
生命周期管理
生命周期感知型組件可執(zhí)行操作來(lái)響應(yīng)另一個(gè)組件 (如 activity 和 fragment) 的生命周期狀態(tài)的變化。這些組件有助于您寫(xiě)出更有條理且往往更精簡(jiǎn)的代碼,這樣的代碼更易于維護(hù)。
我們發(fā)布了 Lifecycle 2.6.0 穩(wěn)定版,其中包括更多 Compose 集成。我們?cè)?Flow 上新增了一個(gè)擴(kuò)展方法,即 collectAsStateWithLifecycle()。該擴(kuò)展從數(shù)據(jù)流中收集數(shù)據(jù),并以可感知生命周期的方式將其最新值表示為 Compose 狀態(tài)。此外,該擴(kuò)展將大量的類轉(zhuǎn)換為 Kotlin,并且仍然保留與之前版本的二進(jìn)制兼容性。
-
Lifecycle 2.6.0
https://developer.android.google.cn/jetpack/androidx/releases/lifecycle#2.6.0
-
將其最新值表示為 Compose 狀態(tài)
https://medium.com/androiddevelopers/consuming-flows-safely-in-jetpack-compose-cde014d0d5a3
預(yù)測(cè)性返回手勢(shì)
在 Android 13 中,我們?yōu)?a target="_blank">手機(jī)、大屏設(shè)備和可折疊設(shè)備等 Android 設(shè)備引入了預(yù)測(cè)性返回手勢(shì)。該功能的發(fā)布?xì)v程跨度將達(dá)多年;在完全實(shí)現(xiàn)后,該功能可讓用戶在完全完成某個(gè)返回手勢(shì)之前就能預(yù)覽此手勢(shì)完成后的目的地或其他結(jié)果,以便用戶能夠決定是繼續(xù)完成手勢(shì)還是留在當(dāng)前視圖中。
Android 預(yù)測(cè)性返回的 Activity API 較為穩(wěn)定,并且我們已更新使用受支持的系統(tǒng)返回回調(diào)函數(shù)的最佳實(shí)踐,包括 BackHandler (用于 Compose)、OnBackPressedCallback 或 OnBackInvokedCallback。我們很高興看到許多 Google 應(yīng)用采用預(yù)測(cè)性返回功能,包括 Google Play 商店、Google 日歷、Google 新聞和 Google TV!
-
最佳實(shí)踐
https://developer.android.google.cn/guide/navigation/predictive-back-gesture#best-practices
在 Activity 1.8 Alpha 版中,除了之前用于處理返回手勢(shì)的 handleOnBackPressed() 回調(diào),OnBackPressedCallback 類現(xiàn)包含新的預(yù)測(cè)性返回進(jìn)度回調(diào),可用于處理返回手勢(shì)的開(kāi)始、整個(gè)手勢(shì)的進(jìn)展以及返回手勢(shì)的取消。我們還添加了 ComponentActivity.setUpEdgeToEdge(),以向后兼容的方式輕松設(shè)置全屏顯示。
Activity更新帶來(lái)更加一致的
照片選擇器體驗(yàn)
Android 照片選擇器是一個(gè)可瀏覽界面,用于展示用戶的媒體庫(kù)。在 Activity 1.7.0 版中,我們更新了照片選擇器 Activity 協(xié)定,以包含一個(gè)額外的回退,這允許原始設(shè)備制造商 (OEM) 和 Google Play 服務(wù)等系統(tǒng)應(yīng)用通過(guò)實(shí)現(xiàn)回退操作,在更廣泛的 Android 設(shè)備和 API 級(jí)別上提供一致的照片選擇器體驗(yàn)。如需了解詳細(xì)信息,您可以參閱相關(guān)文章。
-
Activity 1.7.0 版
https://developer.android.google.cn/jetpack/androidx/releases/activity#1.7.0
-
相關(guān)文章
https://android-developers.googleblog.com/2023/04/photo-picker-everywhere.html
漸進(jìn)式數(shù)據(jù)提取
使用 Paging 庫(kù),您可以加載和顯示小型數(shù)據(jù)片段,以改善網(wǎng)絡(luò)和系統(tǒng)資源消耗。應(yīng)用數(shù)據(jù)可以在 RecyclerViews 或 Compose 延遲列表中逐步妥善地加載。
-
Paging
https://developer.android.google.cn/jetpack/androidx/releases/paging
Paging Compose 1.0.0-alpha19 版支持所有的延遲布局,包括由 Wear 和 TV 庫(kù)提供的自定義布局。為了支持更多延遲布局,Paging Compose 目前在 LazyPagingItems 的 itemKey 和 itemContentType 中提供略低級(jí)別的擴(kuò)展方法。這些 API 旨在幫助您實(shí)現(xiàn) LazyColumn、LazyVerticalGrid 及其 API 中的等效項(xiàng) (如 HorizontalPager) 的已有標(biāo)準(zhǔn)項(xiàng)目 API 的 Key 和 contentType 參數(shù)。雖然這些變化確實(shí)讓 LazyColumn 和 LazyRow 的示例增加了幾行內(nèi)容,但它確保了所有延遲布局的一致性。
-
Paging Compose 1.0.0-alpha19 版
https://developer.android.google.cn/jetpack/androidx/releases/paging#1.0.0-alpha19
應(yīng)用性能優(yōu)化
通過(guò)使用性能庫(kù),您可以構(gòu)建高性能的應(yīng)用,并有針對(duì)性的優(yōu)化以保持其性能表現(xiàn),從而提供更好的最終用戶體驗(yàn)。
縮短啟動(dòng)時(shí)間
借助基準(zhǔn)配置文件,您可以在安裝應(yīng)用時(shí)部分編譯應(yīng)用,以提高運(yùn)行時(shí)和啟動(dòng)的性能,并在新的工具和庫(kù)中獲得大幅提升:
-
基準(zhǔn)配置文件
https://developer.android.google.cn/topic/performance/baselineprofiles/overview
Jetpack 在 Alpha 版本中提供了一個(gè)新的基準(zhǔn)配置文件 Gradle 插件,該插件支持 AGP 8.0 及更高版本,并且您可以在 Studio Hedgehog (目前處于 Canary 版) 中輕松添加至項(xiàng)目。該插件可以將一系列任務(wù)自動(dòng)化,如運(yùn)行生成任務(wù)、從設(shè)備中提取配置文件,并定期或作為發(fā)布流程的一部分將其整合到您構(gòu)建的版本中。
-
基準(zhǔn)配置文件 Gradle 插件
https://developer.android.google.cn/topic/performance/baselineprofiles/create-baselineprofile#baseline-profile-gradle-plugin
-
在 Studio Hedgehog (目前處于 Canary 版) 中輕松添加至項(xiàng)目
https://developer.android.google.cn/studio/preview
借助該插件,您亦可在 AGP 8.1 版中輕松自動(dòng)化新的 Dex 布局優(yōu)化功能,以便您定義 BaselineProfileRule 測(cè)試。此類測(cè)試會(huì)收集啟動(dòng)時(shí)使用的類,并將它們移至 MultiDex 應(yīng)用中的 Dex 主要文件,從而提高局部性。在大型應(yīng)用中,該插件可以讓冷啟動(dòng)時(shí)間在基準(zhǔn)配置文件的基礎(chǔ)上縮短 30%!
-
新的 Dex 布局優(yōu)化功能
https://developer.android.google.cn/topic/performance/baselineprofiles/overview
-
PowerMetric
https://developer.android.google.cn/reference/androidx/benchmark/macro/PowerMetric
-
自定義軌跡指標(biāo)
https://developer.android.google.cn/reference/androidx/benchmark/macro/TraceMetric
您可以在《Android 性能更新》文章中深入了解所有相關(guān)內(nèi)容。
-
Android 性能更新
https://medium.com/androiddevelopers/whats-new-in-android-performance-google-i-o-2023-edition-21a1832c9fa3
界面庫(kù)及相關(guān)指南
我們對(duì)界面庫(kù)進(jìn)行了幾項(xiàng)更新,以更好地支持大屏幕兼容性、可折疊設(shè)備和表情符號(hào)。
Jetpack Compose
Jetpack Compose 是 Android 用于構(gòu)建原生界面的現(xiàn)代工具包,最近發(fā)布了 2023 年 5 月版本,其中不僅包括文本和布局的新功能、持續(xù)的性能改進(jìn)、增強(qiáng)的工具支持、對(duì)大屏設(shè)備的更多支持,還包括更新后的指南。您可以閱讀《Jetpack Compose 的新功能》I/O 大會(huì)文章了解詳情。
-
2023 年 5 月版本
https://developer.android.google.cn/jetpack/androidx/releases/compose#2023.05.00
-
Jetpack Compose 的新功能
https://android-developers.googleblog.com/2023/05/whats-new-in-jetpack-compose.html
Glance
Glance 庫(kù)現(xiàn)在推出了 1.0-beta 版,可以讓您使用 Jetpack Compose 開(kāi)發(fā)針對(duì) Android 手機(jī)、平板電腦和可折疊主屏幕優(yōu)化的應(yīng)用微件 (widget)。該庫(kù)使用 Kotlin 和 Compose,為您提供開(kāi)箱即用的最新 Android widget 改進(jìn)。
-
Glance
https://developer.android.google.cn/jetpack/androidx/releases/glance
-
1.0-beta 版
https://developer.android.google.cn/jetpack/androidx/releases/glance#version_100_2
-
應(yīng)用微件 (widget)
https://developer.android.google.cn/develop/ui/views/appwidgets/overview
-
Android widget 改進(jìn)
https://developer.android.google.cn/about/versions/12/features/widgets
Compose for TV
TV 庫(kù) Alpha 版發(fā)布后,您現(xiàn)在可以使用針對(duì)客廳體驗(yàn)優(yōu)化的組件為 Android TV 打造出色體驗(yàn)。Compose for TV 可以讓 TV 應(yīng)用享受 Jetpack Compose 的各項(xiàng)優(yōu)勢(shì),使您能夠以更少的代碼、更便捷的維護(hù)以及現(xiàn)代 Material 3 外觀直接構(gòu)建應(yīng)用。您可以參閱《Compose for TV》文章了解更多詳情。
-
TV 庫(kù)
https://developer.android.google.cn/jetpack/androidx/releases/tv
-
Compose for TV
https://android-developers.googleblog.com/2023/05/building-pixel-perfect-living-room-experiences-compose-for-tv.html
Material 3 for Compose
Material Design 3 是 Material Design 的新一代版本,幫助您構(gòu)建富有表現(xiàn)力、生動(dòng)個(gè)性的應(yīng)用。Material 3 是 Android 應(yīng)用的推薦設(shè)計(jì)系統(tǒng),1.1 穩(wěn)定版更是引入了激動(dòng)人心的新功能,如底部動(dòng)作條、日期和時(shí)間選擇器、搜索欄、提示,并增加了更多動(dòng)作和交互支持。如需了解詳細(xì)信息,您可以參閱版本說(shuō)明文章。
-
Material Design 3
https://m3.material.io/
-
1.1 穩(wěn)定版
https://developer.android.google.cn/reference/kotlin/androidx/compose/material3/package-summary
-
版本說(shuō)明文章
https://material.io/blog/material-3-compose-1-1
了解窗口狀態(tài)
新的 WindowManager 庫(kù)為 API 版本 14 及更高版本提供了一個(gè)通用式 API 接口,可幫助開(kāi)發(fā)者為新的設(shè)備外形規(guī)格和多窗口環(huán)境提供支持。
-
WindowManager
https://developer.android.google.cn/jetpack/androidx/releases/window
-
1.1.0-beta01 版
https://developer.android.google.cn/jetpack/androidx/releases/window#1.1.0-beta01
其他關(guān)鍵更新
Kotlin 多平臺(tái)
我們繼續(xù)對(duì)使用 Kotlin 多平臺(tái)在 Android 和 iOS 之間共享業(yè)務(wù)邏輯進(jìn)行實(shí)驗(yàn)。我們更新了 Collections 1.3.0-alpha03 版和 DataStore 1.1.0-alpha02 版,以便您現(xiàn)在可以在 KMM 項(xiàng)目中使用這些庫(kù)。如果您在應(yīng)用中使用 Kotlin 多平臺(tái),我們期待收到您的反饋!
-
Kotlin 多平臺(tái)
https://developer.android.google.cn/kotlin/multiplatform
-
Collections 1.3.0-alpha03 版
https://developer.android.google.cn/jetpack/androidx/releases/collection#1.3.0-alpha03
-
DataStore 1.1.0-alpha02 版
https://developer.android.google.cn/jetpack/androidx/releases/datastore#1.1.0-alpha02
-
KMM
https://kotlinlang.org/docs/multiplatform-mobile-getting-started.html
-
反饋
https://issuetracker.google.com/issues/new?component=1337890&template=1803002
以上內(nèi)容是過(guò)去幾個(gè)月中 Jetpack 的所有重要更新回顧,希望這些內(nèi)容可以幫助您更高效地構(gòu)建應(yīng)用。如需了解每個(gè) Jetpack 庫(kù)的更多詳情,您可以查看 AndroidX 版本說(shuō)明;如需快速找到相關(guān)庫(kù),您可以使用 API 選取器;如需了解其他精彩內(nèi)容,您可以觀看 Google I/O 大會(huì)演講視頻。
-
AndroidX 版本說(shuō)明
https://developer.android.google.cn/jetpack/androidx/versions
-
API 選取器
https://developer.android.google.cn/jetpack/androidx/explorer?case=popular
-
觀看 Google I/O 大會(huì)演講視頻
https://io.google/2023/program/
Java 是 Oracle 和/或其附屬公司的商標(biāo)或注冊(cè)商標(biāo)。
?點(diǎn)擊屏末|閱讀原文|即刻了解更多 Android Jetpack 相關(guān)信息
原文標(biāo)題:在 I/O 看未來(lái) | Jetpack 新功能一覽
文章出處:【微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
谷歌
+關(guān)注
關(guān)注
27文章
6128瀏覽量
104952
原文標(biāo)題:在 I/O 看未來(lái) | Jetpack 新功能一覽
文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論