Jetpack 重磅更新!

原文作者:Florina Muntenescu

原文地址:https://medium.com/androiddevelopers/whats-new-in-jetpack-1891d205e136

譯者:秉心說

Android Jetpack 是一套幫助你輕鬆構建高質量應用,兼容舊版本系統的類庫套件。在 Jetpack 發佈兩年之後的現在,我們已經看到了很多 app 的廣泛採用,並且更多的開發者開始使用了。這只是一個開始:今天,我們將發佈過去一年的工作成果,一些新的類庫以及現有類庫的重大更新。

下面是 Jetpack 最近更新彙總的視頻版本:What’s new in Jetpack talk!:

https://www.youtube.com/watch?v=R3caBPj-6Sg&feature=youtu.be

New in Alpha

Hilt - Jetpack 推薦的依賴注入類庫

譯者注:前幾天掘金有一篇介紹 Hilt 的文章 神一樣的存在,Dagger Hilt !! ,看評論區很多讀者 仍然把它當成 Dagger 。其實官方也知道 Dagger2 難用,學習曲線陡峭,所以有了 Hilt,一個基於 Dagger2 的爲 Android 準備的依賴注入類庫。

Hilt 是一個幫助你簡化 依賴注入 操作的 Android 類庫,它讓你可以專注於定義和注入的重要部分, 而無需擔心管理所有的 DI 設置。

基於 Dagger 之上,Hilt 繼承了它的編譯期正確性,也提升了運行時性能和可擴展性。Hilt 增加了對 Jetpack 類庫和 Android Framework 類的集成。例如,要注入 ViewModel 的參數的話,你可以在 ViewModel 的構造函數上添加 @ViewModelInject 註解,並在 Fragment 上添加 @AndroidEntryPoint 註解。

在我們發佈的博客 Dependency Injection on Android with Hilt 中,可以瞭解 Hilt 的更多信息。

Paging3 - 逐步加載和顯示數據

Paging 是一個幫助你逐步分塊加載和顯示數據的類庫。今天我們發佈了 Paging3 ,使用 Kotlin Coroutines 完全重寫。這個版本添加了呼聲很高的新特性,例如分隔符,header,footer,列表轉換,用於重試和刷新的觀察列表加載狀態的 API 。

通過 Paging3 ,數據源可以繼承 PagingSource ,並實現 suspend load 方法,在其中可以直接調用其他掛起函數。

關於 Paging3 的更新信息,請查看 文檔 和 codelab 。

譯者注:視頻裏有提到,Paging3 是兼容 Paging2 的,大家可以放心升級(我不負責。。) 。

App Startup - 在應用啓動時初始化組件

App Startup 類庫提供了一種簡單高效的方法在應用啓動時初始化組件,而不是爲每個需要初始化的組件定義單獨的 ContentProvider 。App Startup 允許你定義共享同一個 ContentProvider 的組件初始化器。這可以顯著優化應用啓動時間。

關於 AppStart 的更多信息,請查看 官方文檔 。

Auto-fill IME

Android 11 引入了鍵盤相關的平臺 API ,用於展示自動填充建議,例如密碼管理。Jetpack 的 AutoFill API 通過 InlineSuggestionUi 使得鍵盤和自動填充服務更簡單的使用這一特性。AutoFill 服務通過它可以提供可靠的建議,鍵盤通過它可以自定義建議的樣式。

更簡單的動畫 — core-animation 和 SeekableAnimatedVectorDrawable

爲了更簡單的實現和測試動畫,我們添加了兩個新類庫:androidx.core:core-animation和 androidx.core:core-animation-testing .

我們還在 androidx.vectordrawable 庫中引入了新的 API SeekableAnimatedVectorDrawable 。

core-animation 移植了 Animator 自 Ice Cream Sandwich 依賴的所有特性,例如 暫停/恢復,拖動。

SeekableAnimatedVectorDrawable 是一個基於 core-animation 的全新的,可拖動的,AnimatedVectorDrawable(AVD) 的替代方案。它和 AVD 使用同樣的格式,並添加了 拖動,暫停,恢復的功能。

使用 Database Inspector 調試數據庫

這塊我就不翻譯了,我兩個月前的文章就介紹過了,可以查看一下 數據庫還能這麼看 ?

官方博客也有相關介紹:Database Inspector

WindowManger - 更好的設備支持

WindowManager 是 Jetpack 新增加的類庫,旨在幫助開發者適配各種不同的設備,例如摺疊屏。它爲新舊平臺版本的 WindowManger 特性提供了統一的 API 支持。

支持不同類型的可摺疊設備的初始版本已經投入市場,所以開發者可以進行適配了。更多信息可以查看這篇博客 Support New Form Factors with the new Jetpack WindowManager Library, 示例代碼:https://github.com/android/user-interface-samples/tree/master/WindowManager

譯者注:掘金上也有一篇相關文章,可以參考:Jetpack WindowManager,Android 摺疊屏官方適配方案!

MotionLayout,構建流暢的交互式動畫

MotionLayout 繼承了 ConstraintLayout 的豐富特性,幫助 Android 開發者管理複雜的運動和窗口組件動畫。通過 MotionLayout ,你可以在 ConstraintSets 之間構造過渡動畫,並且可以輕易的集成通用 View 的動畫,像 RecyclerViewViewPager 。Android Studio 4.0 支持了 Motion Editor, 用於創建和預覽 MotionLayout 動畫的圖形工具。

升級現有類庫

Navigation

Navigation 2.3 增加了對 dynamic feature modules(動態功能模塊) 的支持,允許用戶僅下載應用中需要的模塊,大大降低了首次下載的 Apk 大小。現在,你可以導航到這些模塊,就好像本身就是 base apk 的一部分一樣。除了允許查詢參數之外,Deep link 現在還支持自定義 action 和 mime type 。

返回結果 有了新的 API,Navigation 使用 SavedStateHandle 在目標之間傳遞數據。你可以使用先前的 BackStackEntry  並在上面設置返回值。

新的 TestNavHostController 幫助你在測試中訪問回退棧並設置當前 destination  。

WorkManager

最新版本的 WorkManager 通過前臺服務增加了對需要保持存活的耗時和重要任務的支持。

爲了更輕鬆地診斷 WorkManager 任務中的問題,我們新增了 Diagnostics API 藉助 adb 你查看內部工作狀態並輸出到 logcat 。

adb shell am broadcast \
 -a "android.work.diagnostics.REQUEST_DIAGNOSTICS" \
 -p "<your_app_package_name>"

爲了幫助你避免 WorkManager 使用過程中的常見錯誤,我們已經添加了一些 Lint 規則來標記他們。其他的一些 API 更新包括:支持設置和觀察 工作進度 ;優化對當前工作的查詢 API;改進正在運行的 scheduler 。

Benchmark

Benchmark 庫的最新 alpha 版本與 CPU profiling 整合在了一起,這樣就可以對基準測試進行分析,然後直接在 Android Studio 中查看方法或採樣的 trace 。我們還增加了對內存分配跟蹤的支持,這樣你就可以優化分配所花的時間並減少了很多垃圾回收。

Permissions

我們引入了新的 ActivityResult API ,使得權限請求更加簡單。新的 API 使用 RequestPermissionContract 代替原來的 requestPermissions 方法,大大簡化了權限申請流程。同時對一般的 intent 提供了類型安全的協議,例如 拍照 和 打開文檔 。

Game SDK

今年早些時候推出的 Android Game SDK 現在也是 Jetpack 的一部分,在 Google Maven 倉庫已可使用。

它包含兩個重要的模塊,Frame pacing API 是遊戲能夠保持穩定的幀率,並可以降低輸入的延遲。Performance Tuner 使你能夠大規模的測量和優化幀率。

更多相關信息可以查看 官方文檔 。

CameraX

安卓設備上的相機有很大差異,CameraX 兼容了 90% 的設備。自從去年 2月份 CameraX 進入 Beta 以來,我們專注於可靠性以確保 API 在大量設備上具有良好表現。CameraX 測試實驗室在超過 4 億活躍設備上運行了我們的自動測試套件。

最新版本的 CameraX 帶來了 PreviewView 組件的優化。現在它可以可靠的處理與應用生命週期的交互以及頁面的交互。它還透明的優化了你的設備,在設備底層使用 SurfaceView ,有益於提升性能表現,減少緩衝和提供電源效率。

更多內容請查看 官方文檔 和 代碼示例 。

Security

Jetpack Security 類庫提供了安全易用的基於文件的加密接口,例如 EncryptedFile和 EncryptedSharedPreferences 。

Jetpack Security 利用 Android KeyStore 的優勢,提供硬件支持的存儲和操作安全性。Release Candidate 2 版本現在支持 Marshmallow+ 版本,1.1.0 alpha 版本支持 Lollipop+ 以上版本。

AppCompat

AppCompat 移植了大量 UI 元素和平臺特性,如 Material 主題, Toolbar,Dark Theme 。在最新版本中,我們添加了一些 Lint 規則,讓你更好的區分屬性是來自 Appcompat 還是原本的 framework ,確保你使用正確的一個。我們還對 AppCompat 深色主題進行了實質性的穩定性改進。

Webkit

Jetpack WebKit 在 1.2 release 版本新增了一個 API,強制支持暗黑模式。當這個 API 啓動時,如果網站支持深色主題,WebView 會進行渲染。如果不支持,API 將會強制修改相應的顏色。

Jetpack Compose - 全新的 UI 工具包

最新的現代化 UI 工具包 Jetpack Compose 現在已經到達 Developer Preview 2 版本。這個版本添加了許多新特性:與 View 的互交互性,更多的 Material UI 組件,支持深色主題,新的 UI 測試和動畫 API ,ConstraintLayout 基本支持,優化狀態管理,集成可觀察流,RTL 支持。Android Studio 的預覽現在可以交互,並且還有大量的編譯優化。

更多信息可以觀看視頻 What's new in Compose?

最後

前面快速介紹了 Jetpack 在之前幾個月的更新。擁有 90+ 可用類庫,我們也知道你很難找到你需要的,所以我們重新設計了 Jetpack 網站 ,並添加了一個方便的 API 選擇器, 以快速幫您找到可以解決問題的 Jetpack 庫。

更多 Jetpack 的信息,請關注 Jetpack 周(7 月 20 日這一週)即將放出的視頻,博客和 codelab 。


後續會帶來一些最新類庫的使用介紹和原理分析,我是 秉心說 ,關注我,不迷路!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章