乐趣区

关于android:Android-Jetpack-更新一览

作者 / Florina Muntenescu, Android Developer Advocate

Android Jetpack 是一套库、工具和领导标准,帮忙开发者遵循最佳实际,缩小模板代码,以及编写在不同的 Android 版本和设施上运行统一的代码。明天,Google Play 上排名前 1,000 的利用中有 84% 在应用 Jetpack。

上面让咱们一起看看 Jetpack 最新的更新状况,如果您已观看 ☟Jetpack 更新一览☟ 演讲的话,本文会做进一步的补充,请别错过!

https://www.bilibili.com/vide…

△ Jetpack 更新一览

稳固渠道更新一览

CameraX

CameraX 库为跨操作系统版本拜访摄像头性能提供了对立的 API 界面,包含针对特定设施的兼容性修复和变通计划。该库的一些最新改良解决了常见的性能需要,包含反对调整曝光弥补和拜访无关摄像头状态和性能的更详细信息。此外,当初能够在摄像头运行时通过 Camera2Interop 扭转摄像头设置,如 FPS 范畴。该库还带来了对最新设施和操作系统性能的反对,包含高动静范畴 (HDR) 预览、变焦率控制,以及对 Android 勿扰模式的反对。但兴许最重要的是,CameraX 库在继续解决性能问题,使图像捕获和初始化速度更快,特地是在旧设施上。

Hilt

Hilt 是 Jetpack 举荐的建设在 Dagger 之上的依赖注入解决方案。作为向稳定版过渡的一部分,Hilt 的 ViewModel 反对曾经回升到外围 Hilt Android API,SavedStateHandle 曾经被增加为 ViewModelComponent 中的默认依赖。此外,Hilt 当初曾经与 Navigation 和 Compose 集成: 您能够取得一个正文的 Hilt ViewModel,其作用范畴是目的地或导航图自身。开发者曾经开始在他们的利用中应用 Hilt,请通过 这篇博文 看看他们获得了哪些教训。

Paging 3.0

Paging 库让您能够加载和显示小块的数据以改善网络和系统资源的耗费。这个版本的特点是应用 Kotlin 齐全重写,对协程和 Flow 有一流的反对,用 RxJava 和 Guava 原语进行异步加载,并对存储库和体现层进行了全面改良。

与 Paging 2 相比,3.0 版本在可用性方面有了很大的改良,重写时就思考到了局部和分阶段迁徙的问题,以便开发者能够依照本人的打算进行过渡。请查看 Paging 3.0 文档 和 Paging 3.0 codelab,以理解更多细节并上手实际。

ConstraintLayout 和 MotionLayout

ConstraintLayout (Jetpack 中用于设计布局的灵便零碎) 和 MotionLayout (治理静止和 widget 动画的 API) 当初曾经公布了稳定版。MotionLayout 当初反对可折叠设施、图像滤镜和动效。请 观看这场 Google I/O 演讲 理解更多对于设计工具的新内容。

Security Crypto

Security Crypto 库让您能够平安、轻松地加密文件和 SharedPreferences。如果您想要加密 SharedPreferences,请用适当的密钥和计划创立一个 EncryptedSharedPreferences 对象,而后像规范 SharedPreferences 对象一样应用它即可。

val prefs: SharedPreferences = EncryptedSharedPreferences.create(
        context,
        "prefs_file_name",
        mainKey,
        prefKeyEncryptionScheme = AES256_SIV,
        prefValueEncryptionScheme = AES256_GCM,
)
// Use the resulting SharedPreferences object as usual.
prefs.edit()
    .putBoolean("show_completed", true)
    .apply()

Fragment

在过来的一年里,咱们在 Fragment 库上着力甚多,对其外部实现进行了清理并缩小了未记录的行为,使开发者更容易在他们的利用中遵循最佳实际,并编写牢靠的测试。这为该库将来的改良奠定了根底,比方反对 Navigation 中的多个后退栈,这可能须要投入一些工作,来做到 API 合约的严格执行。具体来说,在更新库之后,请认真关注您的测试。您能够查看 Fragment 的 公布阐明,理解须要留神的具体案例。

Fragment 最近的版本还引入了 ActivityResult 集成,使得从 fragment 中注册 Activity 后果成为可能。Fragment 还增加了一个新的 FragmentOnAttachListener 接口,以取代不太灵便的 onAttachFragment 办法。在 FragmentFragmentActivity 中重写这个办法的现有代码依然能够失常运行,但咱们曾经废除了 onAttachFragment,以避免新代码意外采纳不太灵便的做法。

// Obtain the fragment manager. May be a childFragmentManager,
// if in a fragment, to observe child attachment.
val fm = supportFragmentManager


val listener = FragmentOnAttachListener {
    fragmentManager, fragment ->
  // Respond to the fragment being attached.
}


fm.addFragmentOnAttachListener(listener)

Beta 渠道更新一览

开发库的性能一旦实现开发,就会进入 Beta 版本以保持稳定。在这之后,只有发现 重大 问题或基于社区反馈才会对 API 进行批改。

DataStore

DataStore 提供了持重的数据存储解决方案,解决了 SharedPreferences 的缺点,同时让 API 接口放弃简略且高度可用。DataStore 带来了对最佳实际的反对,如 Kotlin 协程与 Flow 和 RxJava。DataStore 容许您通过 Preference DataStore 存储键值对,或者通过 Proto DataStore 存储 protobuff 格局的类型对象。您还能够 插入 本人的序列化解决方案,比方 Kotlin Serialization。

Alpha 渠道更新一览

Alpha 版本的库处于沉闷的开发状态: API 可能会被增加、扭转或删除,但库中的内容是通过测试的,一般来说具备高度的可用性。

AppSearch

AppSearch 是一个新的设施上搜寻库,提供高性能且功能丰富的全文搜寻性能。与 SQLite 相比,AppSearch 反对多种语言,简化了查问后果的排序,对大型数据集的索引和搜寻也有更低的提早。

AppSearch 1.0.0-alpha01 带来了 LocalStorage 反对,它容许您的利用治理结构化的数据,称为 “ 文档 ”,而后对其进行查问。您的利用应用 “ 模式类型 ” 来定义构造。例如,您能够将一个音讯 (Message) 建模为一个模式类型,其中包含主题、注释和发件人等数据。

应用构建器来创立模式类型的文件,而后将它们增加到存储中。查问 “body:fruit” 将检索所有在音讯注释中带有 “fruit” 一词的文档。

在 Android S 中,AppSearch 还将提供 PlatformStorage,使得您能够与其余利用平安地共享您的利用里的数据,而且因为无需链接额定的原生库,您的利用的二进制尺寸也将更小。请留神目前在 Jetpack 中还不能应用 AppSearch,因为其尚未针对 Android S SDK 开发。

△ Android S+ 上的集中存储,用于整合到全设施搜寻中

Room

Room 是咱们举荐大家采纳的数据长久层,在平台上提供更多的可用性和安全性。

Room 2.4.0-alpha 带来了对 主动迁徙 的反对。当您的数据库模式发生变化时,您当初能够申明一个 @AutoMigration,指出您想从哪个版本迁徙到哪个版本,Room 就会为您生成迁徙后果。对于更简单的迁徙,您依然能够应用 Migration 类。

@Database(
-   version = 1,
+   version = 2,
    entities = {Doggos.class},
+   autoMigrations = {+         @AutoMigration (from = 1, to = 2)
+     }
  )
public abstract class DoggosDatabase extends RoomDatabase {}

Room 2.3.0 稳定版带来了对 Kotlin 符号解决 的实验性反对,在咱们对 Kotlin 代码的基准测试中,其速度比 KAPT 进步了 2 倍,还带来了对枚举和 RxJava3 的内置反对。

Room 还引入了 QueryCallback 类,用于在执行 SQLite 语句时提供回调,以简化日志等工作。另外还退出了新的 @ProvidedTypeConverter 正文,让您在创立类型转换器时更加灵便。

WorkManager

WorkManager 库是 Android 举荐的安顿可推延的异步工作的形式,即便利用退出或设施重启也会运行。WorkManager 曾经对工作调节的可靠性进行了改良,确保所有工作都被执行,并为特定的 Android OS 版本提供了各种解决办法。

WorkManager 的最新版本改良了 对多过程利用的反对,包含将工作申请调度对立到一个过程中的性能劣势,以及在调度许多申请时限度数据库增长。

2.7 版当初处于 alpha 版本,针对 Android S SDK 开发,且适配平台新的前台限度。请观看 Android 上的无效后台任务 演讲理解更多细节。

Background Tasks Inspector 现已在 Android Studio Arctic Fox 中可用,在应用库的最新版本时您能够轻松查看和调试 WorkManager 作业:

△ Background Tasks Inspector

Navigation

Jetpack 的 Navigation 库是在利用中进行导航的框架,当初提供了对多个后退栈的反对,并简化了目的地位于雷同深度的状况,如底部导航栏。

Macrobenchmark

Macrobenchmark 库将 Jetpack 的基准测试范畴扩大到了利用启动和综合行为,如滚动性能。您能够近程应用该库来跟踪继续集成测试中的指标,或在本地配合 Android Studio 中的分析后果来应用。请 观看 Google I/O 演讲 进一步理解相干细节。

对于那些想与 Google Assistant 更严密集成的开发者来说,Google Shortcuts 库提供了一种办法,通过现有的 ShortcutInfo 类向 Google Assistant 和其余 Google 服务提供动作。

您能够通过 ShortcutManager 一次发送多达 15 个快捷方式,以显示在 Google Assistant 和其余服务中,使它们可用于语音和其余互动。

要实现这一点,您须要用一个 Intent 和一个能力绑定 (capability binding) 来定义一个快捷方式;这个绑定提供了语义上有意义的信息,这将帮忙 Google 服务找出将其展现给用户的最佳形式。

// expose a "Cappuccino" action to Google Assistant and other services
ShortcutInfoCompat siCompat =
  ShortcutInfoCompat.Builder(ctx, "id_cappuccino")
    .setShortLabel("Cappuccino")
    .setIntent(Intent(ctx, OrderCappuccino::class.java))
    .addCapabilityBinding(
        "actions.intent.ORDER_MENU_ITEM",
        "menuItem.name",
        asList("cappuccino")
    )
    .build()


ShortcutManagerCompat.pushDynamicShortcut(ctx, siCompat)

EmojiCompat

您的利用中所有用户生成的内容都蕴含 🎉,而反对古代表情符号是使您的利用 ✨ 的要害!EmojiCompat 库在 API 19 和更高版本中反对古代表情符号,它曾经转移到新的构件 :emoji2:emoji2,取代了以前的 :emoji:emoji 构件。新的 emoji2 库用 AppStartup 库减少了 🪄 主动配置性能 (您不须要增加任何代码 💻 来显示 🐼) !

AppCompat 从 AppCompat 1.4 开始减少了 emoji2。如果您的利用应用 AppCompat,用户将能看到古代的表情符号 ⭐,无需进一步配置。没有应用 AppCompat 的利用,能够增加 :emoji2:emoji2-views。对于自定义 TextViews,能够应用 :emoji2:emoji2-views-helpers 中的实用办法,或通过继承 AppCompat 视图来反对古代表情符号。

Jetpack Compose

Jetpack Compose 是用于在 Android 上构建原生 UI 的古代工具包,简化并减速了 Android 上的 UI 开发。Jetpack Compose 目前处于 Beta 版本,并打算 在 7 月份公布稳定版。本文提到的许多库,以及您可能曾经在应用的其余库,都专门推出了与 Jetpack Compose 集成的性能。包含 Activity、ViewModel、Navigation 和 Hilt,所有这些库都能够帮忙您在利用中更顺利地应用 Compose。请 观看 Google I/O 演讲 进一步理解相干细节。

不同设施类型

Jetpack 让您能够更轻松地针对不同状态的设施进行开发,包含可折叠设施、大屏幕设施和 Wear 设施。咱们为大屏幕设施开发引入了新的标准,同时改良了 WindowManagerSlidingPaneLayout 等 Jetpack 库。请浏览 这篇博文 理解详情。

总结

以上便是 Jetpack 新内容的概览。请浏览 AndroidX 的 版本阐明,以便理解每个库的所有更新细节,以及观看 Google I/O 演讲 理解其中一些库的详细信息。

如果您有任何反馈或问题,欢送通过下方二维码向咱们提交。您的问题有可能呈现在下一期的 FAQ 中并取得解答。感谢您的反对!

如果您有任何反馈或问题,欢送 向咱们提交。您的问题有可能呈现在下一期的 FAQ 中并取得解答。感谢您的反对!

退出移动版