-
Jetpack 是什么
- Jetpack : 喷气背包
- Jetpack 不是一个库,而是一些库的合集,更多的是Google的一个态度
-
为什么会有 Jetpack 的存在
- 长久以来, Android 官方没有制定一个项目架构的规范,只要能够实现,代码怎么写随便.Android开发者基本都是被放养的.生态基本全靠自建,代表有Square全家桶,Glide,Google自己也肯定是出力的,只不过并没有明确Android开发的几个大方向.
- 比如Support lib 经常自己打自己脸.一会推这个API,一会又Deprecate那个API,再比如标准库中Camera API,苦不堪言.
- 自Google IO 17 开始。官方终于开始管理这个混乱的Android开发环境,推出 Architecture Component,旨在帮助开发者写出更加符合高质量代码规范,更具有架构设计的应用程序.
- IO 18 更是加大力度,将Support lib改名 AndroidX 重新开始,并且将所有Google 认为是正确的Practice 集中在一起,帮助开发者来简单,高效地进行Android开发,其中也包括 Architecture Component,而这所有的东西现在,统称 Jetpack。
- Jetpack 目前开始基本就明确了Google的大方向,Jetpack里有的,Google 将会继续维护并增加新特性。 Jetpack里没有的,除Retrofit/OkHttp/RxJava 等一些优秀的第三方库以外,Google要么不明确支持,要么早晚被Deprecate。
-
为什么要使用 Jetpack
- Jetpack 有一个特点:它们大部分不依赖于任何 Android 系统版本,这意味着这些组件通常是定义在 AndroidX 库中的,并且拥有非常好的向下兼容性.也就是意味着不需要考虑版本的兼容问题.
- Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。-- -- 摘自 Android 官网
- 具体到开发中,你不可能不用JetPack,AndroidX是必集成的(由于这玩意跟老的support库冲突,现在市面上的应用基本都切换到X了),否则根本没法正常开发。我们一直在用,只是我们很少会说“Jetpack”而是更多的聚焦于这面大旗下具体的SDK而已。
-
Jetpack 包括哪些东西
- 基础 (基础组件可提供横向功能,例如向后兼容性.测试和 Kotlion 语言支持)
- Android KTX (编写更简洁、惯用的 Kotlin 代码)
- AppCompat (在较低版本的 Android 系统上恰当的降级)
- Auto
- 检测
- 多 dex 处理
- 安全
- 测试
- TV
- 架构 (架构组件可帮助您设计稳健,可测试且易维护的应用)
- 数据绑定 (以声明方式将可观察数据绑定到界面元素)鸡肋
- Lifecycles (管理您的 Activity 和 Fragment)
- LiveData (在底层数据库更改时通知视图)
- Navigation (处理应用内导航所需要的一切) 鸡肋
- Paging (逐步从您的数据源按需加载信息) 鸡肋
- Room (流畅的访问 SQLite 数据库)
- ViewModel (以注重生命周期的方式管理界面相关的数据)
- WorkManager (管理您的 Android 后台作业)
- 行为 (行为组件可帮助您的应用与标准 Android 服务(如通知、权限、分享和 Google Cast)的向后兼容 API )
- CameraX
- 下载管理器 (安排和管理大量下载任务)
- 媒体和播放
- 通知
- 权限
- 偏好设置
- 共享
- 切片 (创建可在应用外部显示应用数据的灵活界面元素)
- 界面 (界面组件可提供微件和辅助程序,让您的应用不仅简单易用,还能带来愉悦体验,了解有助于简化界面开发的 Jetpack Compose)
- 动画和过渡
- 表情符号
- Fragment
- 布局
- 调色板
- 基础 (基础组件可提供横向功能,例如向后兼容性.测试和 Kotlion 语言支持)
-
评价
- 既有比较成功的Lifecycle、ViewModel、LiveData、Room,小而精,侵入性小,使用方便
- 也有诸如databinding,navigation、paging这样高侵入性又没什么大用的鸡肋
- Room作为一个简单的ORM框架还是很易用的,如果你项目从来没集成过ORM,要做简单的本地数据化,Room是个很不错的选择
- 如果你的应用要逐步迭代 MVVM,那 ViewModel+LiveData 是最佳选择,如果有集成 RxJava 则可以不用 LiveData。
针对 Jetpack 会出一个系列,欢迎持续关注.
推荐阅读Kotlin系列:
欢迎关注这个不是技术号的公众号,我们聊聊别的。