作者 / 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
办法。在 Fragment
或 FragmentActivity
中重写这个办法的现有代码依然能够失常运行,但咱们曾经废除了 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 设施。咱们为大屏幕设施开发引入了新的标准,同时改良了 WindowManager
和 SlidingPaneLayout
等 Jetpack 库。请浏览 这篇博文 理解详情。
总结
以上便是 Jetpack 新内容的概览。请浏览 AndroidX 的 版本阐明,以便理解每个库的所有更新细节,以及观看 Google I/O 演讲 理解其中一些库的详细信息。
如果您有任何反馈或问题,欢送通过下方二维码向咱们提交。您的问题有可能呈现在下一期的 FAQ 中并取得解答。感谢您的反对!
如果您有任何反馈或问题,欢送 向咱们提交。您的问题有可能呈现在下一期的 FAQ 中并取得解答。感谢您的反对!