共计 5569 个字符,预计需要花费 14 分钟才能阅读完成。
一、Android JetPack——Google 如许痛的领悟
最近好几个小伙伴问我什么是 Android JetPack,据说这个包如同有点牛,帅哥你会不?
我心想什么鬼!Android JetPack 这货不是一个库,是一整套的库,是一种信奉一种态度好么。从前,Android 开发者根本都是被放养的。生态根本全靠自建,代表有 Square 全家桶,Glide,Google 本人也必定是出力的,然而并没有明确 Android 开发的几个大方向,所以安卓的开发生态始终是百花齐放百家争鸣。带来的问题就是经常出现包援用莫名报错。
事件从 2017 年产生了转折,在 Google IO 2017,官网终于正视了这个问题开始尝试治理这个凌乱的 Android 开发环境,并推出了 Architecture Component,次要有以下几项:
Room: 官网的 ORM 库(集体认为比 GreenDao 好用)ViewModel/LiveData:生命周期管理工具,自此 Android 才真正的利用上了 MVVM(BTW,DataBinding 也归到了 JetPack 里)
在 2018 年,AndroidX 横空出世,并且从 1 开始,用意取代常常本人打本人脸的 Support Lib。
一张图来看看 Google 对 JetPack 有多看重
那 JetPack 到底是啥呢?
Jetpack is a suite of libraries, tools, and guidance to help developers write high-quality apps easier. These components help you follow best practices, free you from writing boilerplate code, and simplify complex tasks, so you can focus on the code you care about.
Jetpack 是一套库、工具和指南,可帮忙开发者更轻松地编写优质利用。这些组件可帮忙您遵循最佳做法、让您解脱编写样板代码的工作并简化简单工作,以便您将精力集中放在所需的代码上。
二、JetPack 里的组件
上图就是 JetPack 中蕴含的组件列表,每个组件都是绝对独立的,能够被独自应用和构建。其中像被介绍的最多,也是最常被应用的 LiveData, ViewModel, Room, Navigation, WorkManager 之类的都公布了正式版,而 CameraX, Compose 之类的还处在 Alpha 版本,未正式公布,官网并不倡议在生产环境中应用。
而后说下,JetPack 所有的组件都是基于 AndroidX 构建的,如果想在我的项目中应用 JetPack 须要先将我的项目中对 Support Lib 的依赖全副换成 AndroidX。
Android 目前曾经倒退了 11 年,能够说是比拟成熟的技术了,一开始时框架很少,也没有什么标准,所有的代码都是要本人写,比方网络申请,数据库申请,数据解析等等。起初呈现了一些框架来帮忙开发者疾速进行开发,比方 XUtils、Volley、OKHttp、EventBus 等,随着框架越来越多,一个利用能够有多种技术选型,间接导致利用开发越来越不标准,导致做进去的利用品质参差不齐,这显然不是 gu ge 想看到的。guge 随后推出了 MVP 和 MVVM 相干的官网例子,成果很个别,而且覆盖面只是在架构上,Goole I/O 2018 大会上推出的 Android Jetpack 无望解决以上的问题。
三、Android Jetpack 简介
Jetpack 并不是一个框架或者组件,它是一套库、工具和指南的汇合,可帮忙开发者更轻松地编写优质利用。这些组件可帮忙开发者遵循最佳做法、解脱编写样板代码的工作并简化简单工作,以便将精力集中放在所需的代码上。
Android Jetpack 中的很多组件并不都是新开发的,而是很早就有了,比方在 Goole I/O 2017 大会时推出了 Android Architecture Component(AAC),它包含了 LifeCycle、LiveData、ViewModel、Room。在 Goole 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 组件围绕现代化设计实际构建而成,具备向后兼容性,能够缩小解体和内存透露。
四、Android Jetpack 分类
下图是 Jetpack 的分类。
gu ge 仍旧一直的欠缺 Android Jetpack,截至到 2019 年 8 月曾经有很多新加的组件并没有显示在上图中,比方 CameraX 等。Android Jetpack 分类有 4 种,别离是 Architecture、Foundationy、Behavior、UI,上面别离介绍下。
1. Architecture(架构组件)
Architecture 指的是架构组件,帮忙开发者设计持重、可测试且易保护的利用。架构组件能够说是对利用开发帮忙最大的组件,本系列也是围绕着架构组件进行解说。
DataBinding:以申明形式将可察看数据绑定到界面元素,通常和 ViewModel 配合应用。
Lifecycle:用于治理 Activity 和 Fragment 的生命周期,可帮忙开发者生成更易于保护的轻量级代码。
LiveData: 在底层数据库更改时告诉视图。它是一个可察看的数据持有者,与惯例 observable 不同,LiveData 是生命周期感知的。Navigation: 解决利用内导航。
Paging: 能够帮忙开发者一次加载和显示小块数据,按需加载局部数据可缩小网络带宽和系统资源的应用。
Room: 敌对、晦涩的拜访 SQLite 数据库。它在 SQLite 的根底上提供了一个形象层,容许更弱小的数据库拜访。
ViewModel: 以生命周期的形式治理界面相干的数据,通常和 DataBinding 配合应用,为开发者实现 MVVM 架构提供了强有力的反对。
WorkManager: 治理 Android 的后盾的作业,即便应用程序退出或设施重新启动也能够运行可提早的异步工作。
官网举荐的 Android 利用架构如下图所示。
这些架构组件既能够配合应用,也能够独自应用,这里倡议还是尽量依照官网举荐的来。
2. Foundationy(根底组件)
根底组件提供横向性能,例如向后兼容性、测试、平安、Kotlin 语言反对,并包含多个多个平台开发的组件。
Android KTX:优化了供 Kotlin 应用的 Jetpack 和 Android 平台 API。帮忙开发者以更简洁、更愉悦、更习用的形式应用 Kotlin 进行 Android 开发。AppCompat:帮忙较低版本的 Android 零碎进行兼容。Auto: 开发 Android Auto 利用的组件,提供了实用于所有车辆的标准化界面和用户交互。检测:从 AndroidStudio 中疾速检测基于 Kotlin 或 Java 的代码。多 Dex 解决:为具备多个 Dex 文件利用提供反对。平安:平安的读写加密文件和共享偏好设置。测试:用于单元和运行时界面测试的 Android 测试框架。TV: 构建可让用户在大屏幕上体验沉迷式内容的利用。Wear OS: 开发 Wear 利用的组件。
3. Behavior(行为组件)
行为组件可帮忙开发者的利用与规范 Android 服务(如告诉、权限、分享)相集成。CameraX:帮忙开发简化相机利用的开发工作。它提供统一且易于应用的界面,实用于大多数 Android。设施,并可向后兼容至 Android 5.0(API 21)。DownloadManager:解决长时间运行的 HTTP 下载的零碎服务。媒体和播放:用于媒体播放和路由(包含 Google Cast)的向后兼容 API。告诉:提供向后兼容的告诉 API,反对 Wear 和 Auto。权限:用于检查和申请利用权限的兼容性 API。设置:创立交互式设置,倡议应用 AndroidX Preference Library 库将用户可配置设置集成到利用中。分享操作:能够更轻松地实现敌对的用户分享操作。切片:切片是一种 UI 模板,创立可在利用内部显示利用数据的灵便界面元素。
4. UI(界面组件)
Animation and Transition:该框架蕴含用于常见成果的内置动画,并容许开发者创立自定义动画和生命周期回调。Emoji Compatibility:即使用户没有更新 Android 零碎也能够获取最新的表情符号。Fragment:组件化界面的根本单位。布局:用 XML 中申明 UI 元素或者在代码中实例化 UI 元素。调色板: 从调色板中提取出有用的信息。
五、在利用中引入 Jetpack 相干组件
在我的项目 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 的架构组件。
最初对于程序员来说,要学习的常识内容、技术有太多太多,要想不被环境淘汰就只有一直晋升本人,素来都是咱们去适应环境,而不是环境来适应咱们!
当程序员容易,当一个优良的程序员是须要一直学习的,从高级程序员到高级程序员,从高级架构师到资深架构师,或者走向治理,从技术经理到技术总监,每个阶段都须要把握不同的能力。早早确定本人的职业方向,能力在工作和能力晋升中甩开同龄人。
如何疾速把握 Jetpack?
Jetpack Compose 一个残缺的、全新的框架,学习起来的确存在一些难度;为了帮忙大家更好地学习 Compose,早日实现更加高效、高级的 UI 界面开发,这里给大家分享《Jetpack 架构组件从入门到精通》和《Android Jetpack Compose 开发应⽤指南》从实践根底到我的项目实战,心愿能帮忙到有须要的小伙伴,点击这里查看全部内容
《Jetpack 架构组件从入门到精通》
1. 什么是 Jetpack
2.Android Jetpack – Navigation
3.Android Jetpack – Data Binding
4.Android Jetpack – ViewModel & LiveData
5.Android Jetpack – Room
6.Android Jetpack – Paging
7.Android Jetpack – WorkManger
8.Android Jetpack 架构组件之 Lifecycle
9.Android Jetpack Compose 最全上手指南
10.Android Jetpack 架构组件–App Startup
11.Android Jetpack 最新更新组件介绍
12.Android Jetpack 我的项目实战 (从 0 搭建 Jetpack 版的 WanAndroid 客户端)
《Android Jetpack Compose 开发应⽤指南》
第⼀章 初识 Jetpack
- JetPack 是什么
- JetPack 和 AndroidX
- AndroidX 的迁徙
第⼆章 Compose 的设计原理和基本概念
- JetPack Compose 环境搭建
- JetPack Compose 新个性和组件依赖
- JetPack Compose 编程思维总结
第三章 Compose ⼊⻔
- JetPack Compose ⼊⻔的根底案列
- JetPack Compose ⼊⻔的根底案列
第四章 Compose 布局
- Compose State
- Compose 款式(Theme)
- Compose 布局核⼼控件
- ⾃定义布局
- Compose 中的 ConstraintLayout
第五章 Compose 动画
- Compose SideEffect
- Compose 动画概述
- Compose Crossfade
- Compose animateContentSize
- Animatable
- Compose ⾃定义动画
第六章 Compose 图形
- Compose Canvas
- Compose 绘制 API 的剖析
- Compose ⾃定义绘制
第七章 Compose 核⼼控件总结
- Scaffold
- LazyColumn
篇幅无限,文中材料均收费分享,有须要《Jetpack 架构组件从入门到精通》以及《Android Jetpack Compose 开发应⽤指南》的小伙伴能够点击这里收费支付,保障收费分享!
结语
以当下的环境来说,要开发出一个齐全解脱 JetPack 的 APP 是很难做到的。然而反过来讲 JetPack 也远远没有到成熟的境地,目前也还存在亟待解决的问题,将来能够做的事件还有很多。
对于应用的话,并不是所有库都倡议应用,因为目前还有很多库在 alpha 版本。然而作为学习还是很有必要的,能给你日常的开发中多提供一些思路,这些是无可非议的。
总的来说,Jetpack 的推广对宽广开发者而言是利远远大于弊的。