本文原作者: 刘望舒,原文发布于公众号刘望舒: https://mp.weixin.qq.com/s/_8bR_ihIKLxqkSh3r_B0Mg
Android 已经发展了 11 年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如 XUtils、Volley、OKHttp、EventBus 等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了 MVP 和 MVVM 相关的官方例子,效果很一般,而且覆盖面只是在架构上,Google I/O 2018 大会上推出的 Android Jetpack 有望解决以上的问题。
Jetpack 并不是一个框架或者组件,它是一套库、工具和指南的集合,可帮助开发者更轻松地编写优质应用。这些组件可帮助开发者遵循最佳做法、摆脱编写样板代码的工作并简化复杂任务,以便将精力集中放在所需的代码上。
Android Jetpack 中的很多组件并不都是新开发的,而是很早就有了,比如在 Google I/O 2017 大会时推出了 Android Architecture Component (AAC),它包括了 LifeCycle、LiveData、ViewModel、Room。在 Google I/O 2018 大会上,用 AndroidX 替代了 Android Support Library,并在 Android Architecture Component 的基础上发布了 Android Jetpack,AndroidX 也是属于 Android Jetpack。
Jetpack 主要特性有以下三点:
1.加速开发组件可单独使用,也可以协同工作,当使用 kotlin 语言特性时,可以提高效率。
2.消除样板代码Android Jetpack 可管理繁琐的 Activity (如后台任务、导航和生命周期管理)。
3.构建高质量的强大应用Android Jetpack 组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏。
下图是 Jetpack 的分类。
谷歌仍旧不断的完善 Android Jetpack,截至到 2019 年 8 月已经有很多新加的组件并没有显示在上图中,比如 CameraX 等。Android Jetpack 分类有 4 种,分别是 Architecture、Foundationy、Behavior、UI,下面分别介绍下。
Architecture 指的是架构组件,帮助开发者设计稳健、可测试且易维护的应用。架构组件可以说是对应用开发帮助最大的组件,本系列也是围绕着架构组件进行讲解。
DataBinding: 以声明方式将可观察数据绑定到界面元素,通常和 ViewModel 配合使用。
Lifecycle: 用于管理 Activity 和 Fragment 的生命周期,可帮助开发者生成更易于维护的轻量级代码。
LiveData: 在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规 observable 不同,LiveData 是生命周期感知的。
Navigation: 处理应用内导航。
Paging: 可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用。
Room: 友好、流畅的访问 SQLite 数据库。它在 SQLite 的基础上提供了一个抽象层,允许更强大的数据库访问。
ViewModel: 以生命周期的方式管理界面相关的数据,通常和 DataBinding 配合使用,为开发者实现 MVVM 架构提供了强有力的支持。
WorkManager: 管理 Android 的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。
官方推荐的 Android 应用架构如下图所示。
这些架构组件既可以配合使用,也可以单独使用,这里建议还是尽量按照官方推荐的来。
基础组件提供横向功能,例如向后兼容性、测试、安全、Kotlin 语言支持,并包括多个多个平台开发的组件。
Android KTX: 优化了供 Kotlin 使用的 Jetpack 和 Android 平台 API。帮助开发者以更简洁、更愉悦、更惯用的方式使用 Kotlin 进行 Android 开发。
AppCompat: 帮助较低版本的 Android 系统进行兼容。
Auto: 开发 Android Auto 应用的组件,提供了适用于所有车辆的标准化界面和用户交互。
检测: 从 Android Studio 中快速检测基于 Kotlin 或 Java 的代码。
多 Dex 处理: 为具有多个 Dex 文件应用提供支持。
安全: 安全的读写加密文件和共享偏好设置。
测试: 用于单元和运行时界面测试的 Android 测试框架。
TV: 构建可让用户在大屏幕上体验沉浸式内容的应用。
Wear OS: 开发 Wear 应用的组件。
行为组件可帮助开发者的应用与标准 Android 服务 (如通知、权限、分享) 相集成。
CameraX: 帮助开发简化相机应用的开发工作。它提供一致且易于使用的界面,适用于大多数 Android。设备,并可向后兼容至 Android 5.0 (API 21)。
DownloadManager: 处理长时间运行的 HTTP 下载的系统服务。
媒体和播放: 用于媒体播放和路由 (包括 Google Cast) 的向后兼容 API。
通知: 提供向后兼容的通知 API,支持 Wear 和 Auto。
权限: 用于检查和请求应用权限的兼容性 API。
设置: 创建交互式设置,建议使用 AndroidX Preference Library 库将用户可配置设置集成到应用中。
分享操作: 可以更轻松地实现友好的用户分享操作。
切片: 切片是一种 UI 模板,创建可在应用外部显示应用数据的灵活界面元素。
Animation and Transition: 该框架包含用于常见效果的内置动画,并允许开发者创建自定义动画和生命周期回调。
Emoji Compatibility: 即便用户没有更新 Android 系统也可以获取最新的表情符号。
Fragment: 组件化界面的基本单位。
布局: 用 XML 中声明 UI 元素或者在代码中实例化 UI 元素。
调色板: 从调色板中提取出有用的信息。
在项目 build.gradle 中添加 google() 库,如下所示。
allprojects {
repositories {
google()
jcenter()
}
}
如果想引入 Room,可以在模块 build.gradle 中这么写:
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1 "
androidTestImplementation "android.arch.persistence.room:testing:1.1.1"
这篇文章内容不多,旨在让大家了解 Android Jetpack 是什么,包括什么,如何引用,从下一篇开始,就开始学习 Android Jetpack 的架构组件。
"开发者说·DTalk" 面向中国开发者们征集 Google 移动应用 (apps & games) 相关的产品/技术内容。欢迎大家前来分享您对移动应用的行业洞察或见解、移动开发过程中的心得或新发现、以及应用出海的实战经验总结和相关产品的使用反馈等。我们由衷地希望可以给这些出众的中国开发者们提供更好展现自己、充分发挥自己特长的平台。我们将通过大家的技术内容着重选出优秀案例进行谷歌开发技术专家 (GDE) 的推荐。
点击屏末 | 阅读原文 | 了解更多 "开发者说·DTalk" 活动详情与参与方式
长按右侧二维码
报名参与