从上帝视角看Android JetPack


从上帝视角看Android JetPack


前言

作为一名Android老司机,什么Square全家桶,Glide, 各种Bus, MVP,MVVM等等跟Android开发相关的主流的名词那都是如数家珍 。

很多时候我们吐槽,Android碎片化严重,Google爸爸又天高皇帝远,对国内的Android生态又心有余而力不足。国内的Android开发者很长一段时间也基本处于散养的状态。项目的库基本都是用上面说到的主流库,自己动手,丰衣足食。

可能大部分开发者们更focus的是当下的某个技术点,而缺乏从整个架构战略的方向去看待圈内的整个生态。

历史背景

大体上,JetPack是Google推出的一些库的集合。是Android基础支持库SDK以外的部分。包含了组件、工具、架构方案等...开发者可以自主按需选择接入具体的哪个库。

Google IO 2017开始。Google 开始推出Architecture Component, ORM库Room, 用户生命周期管理的ViewModel/ListData.

Google IO 2018

将Support lib 更名为androidx. 将许多Google认为是正确的方案和实践集中起来。以高效的开发Android APP.

Google IO 2019大会上公布新的安卓UI库Jetpack Compose。

以上种种,现在统称为JetPack.其最核心的出发点就是帮助开发者快速构建出稳定、高性能、测试友好同时向后兼容的APP。

特点

  • 高效开发:包含的多个组件协同使用
  • 消除模板代码:可管理繁琐的 Activity,如 后台任务、导航和生命周期管理
  • 高质量:围绕现代化设计实践构建、具有向后兼容性,可有效减少崩溃 & 内存泄漏

组成

Android Jetpack的组件主要分为四大类:

  • 基础 - Foundation
  • 架构 - Architecture
  • 行为 - Behavior
  • 界面 - UI

  • 从上帝视角看Android JetPack

    基础 - Foundation

    提供了最基础的底层功能,如向后兼容性、测试、开发语言Kotlin支持等。包含的组件库:

    Android KTX:编写更简洁、惯用的 Kotlin 代码

    AppCompat:在较低版本的 Android 系统上恰当地降级

    Auto:有助于开发 Android Auto 应用的组件

    检测:从 Android Studio 中快速检测基于 Kotlin 或 Java 的代码

    多 dex 处理:为具有多个 DEX 文件的应用提供支持

    安全:按照安全最佳做法读写加密文件和共享偏好设置

    测试:用于单元和运行时界面测试的 Android 测试框架

    TV:有助于开发 Android TV 应用的组件

    Wear OS by Google :谷歌有助于开发 Wear 应用的组件

    架构 - Architecture

    架构组件可帮助您设计稳健、可测试且易维护的应用。

    数据绑定:以声明方式将可观察数据绑定到界面元素

    Lifecycles:管理您的 Activity 和 Fragment 生命周期

    LiveDat::在底层数据库更改时通知视图

    Navigation:处理应用内导航所需的一切

    Paging:逐步从您的数据源按需加载信息

    Room:流畅地访问 SQLite 数据库

    ViewModel:以注重生命周期的方式管理界面相关的数据

    WorkManager:管理您的 Android 后台作业


    从上帝视角看Android JetPack

    Google官方推荐的应用架构


    行为 - Behavior

    帮助应用与标准的 Android 服务(如通知、权限、分享和 Google 助理)相集成。包含组件库:

    相机 - CameraX:简化相机应用的开发工作,可向后兼容至 Android 5.0(API 级别 21)

    下载 - DownloadManager:可处理长时间运行的HTTP下载 & 超时重连

    多媒体 - Media & playback:用于媒体播放 & 路由的向后兼容 API。

    通知 - Notifications:提供向后兼容的通知 API,支持 Wear 和 Auto。

    权限 - Permissions:用于检查和请求应用权限的兼容性 API。

    偏好设置 - Preferences:提供了能够改变应用的功能和行为能力。

    共享 - Sharing:提供适合应用操作栏的共享操作。

    切片 - Slices:创建可在应用外部显示应用数据的灵活界面元素。

    界面 - UI

    辅助绘制界面的View类 & 各种辅助组件,包括:

    动画 - Animation & Transitions:提供各类内置动画,也可以自定义动画效果。

    表情 - Emoji:使用户在未更新系统版本的情况下也可以使用表情符号。

    布局 - Layout:xml书写的界面布局或者使用Compose完成的界面。

    调试板 - Palette:从调色板中提取出有用的信息。

    如何看待Jetpack


    前文说过了,JetPack更多是一种概念和态度。相当于Google把自己的Android生态重新整理了一番。确立了Android未来的版图和大方向。

    JetPack里目前包含的内容,未来也会是Google大力维护和扩展的内容。对应开发者来说也是值得去学习使用的且相对无后顾之忧的。JetPack里没有的,除开一些优秀的第三方库,未来应该也会慢慢被新的API替代,逐渐边缘化,直至打上Deprecate注解。

    以当下的环境来说,要开发出一个完全摆脱JetPack的APP是很难做到的。但是反过来讲JetPack也远远没有到成熟的地步,目前也还存在亟待解决的问题,未来可以做的事情还有很多。

    关于使用的话,并不是所有库都建议使用,因为目前还有很多库在alpha版本。但是作为学习还是很有必要的,能给你日常的开发中多提供一些思路,这些是无可厚非的。

    总的来说,JetPack的推广对广大开发者而言是利远远大于弊的。

    最后,感谢你阅读到这里。但愿这篇文章能让你对Android有一个新的视角和看法。


    分享到:


    相關文章: