天天看點

Android 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 是一個幫助你簡化 依賴注入 操作的 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 服務通過它可以提供可靠的建議,鍵盤通過它可以自定義建議的樣式。

Android Jetpack重磅更新!新的類庫以及現有類庫重大更新!

更簡單的動畫 — 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 調試資料庫

Android Jetpack重磅更新!新的類庫以及現有類庫重大更新!

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

官方部落格也有相關介紹: Database Inspector

WindowManger - 更好的裝置支援

WindowManager 是 Jetpack 新增加的類庫,旨在幫助開發者适配各種不同的裝置,例如折疊屏。 它為新舊平台版本的 WindowManger 特性提供了統一的 API 支援。

支援不同類型的可折疊裝置的初始版本已經投入市場,是以開發者可以進行适配了。更多資訊可以檢視這篇部落格 Support New Form Factors with the new Jetpack WindowManager Library, 示例代碼: github.com/android/use…

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

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

MotionLayout 繼承了

ConstraintLayout

的豐富特性,幫助 Android 開發者管理複雜的運動和視窗元件動畫。 通過

MotionLayout

,你可以在

ConstraintSets

之間構造過渡動畫,并且可以輕易的內建通用 View 的動畫,像

RecyclerView

ViewPager

。Android Studio 4.0 支援了 Motion Editor, 用于建立和預覽 MotionLayout 動畫的圖形工具。

Android Jetpack重磅更新!新的類庫以及現有類庫重大更新!

更新現有類庫

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

Android Jetpack重磅更新!新的類庫以及現有類庫重大更新!

Benchmark 庫的最新 alpha 版本與 CPU profiling 整合在了一起,這樣就可以對基準測試進行分析,然後直接在 Android Studio 中檢視方法或采樣的 trace 。我們還增加了對記憶體配置設定跟蹤的支援,這樣你就可以優化配置設定所花的時間并減少了很多垃圾回收。

Permissions

我們引入了新的 ActivityResult API ,使得權限請求更加簡單。新的 API 使用 RequestPermission Contract 代替原來的

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 。

譯者: 秉心說

位址:https://juejin.im/post/5ee1d438518825434566cf4f