一、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的推广对宽广开发者而言是利远远大于弊的。