读书笔记-Android进阶指北-Gradle与Groovy

本文是关于Android进阶的读书笔记,重点介绍了Gradle和Groovy的基础知识。Gradle是一个基于JVM的构建工具,适用于自动化项目的编译和打包,是Android官方的构建工具。Groovy是一种面向对象的编程语言,常用于Gradle构建脚本。通过理解Gradle和Groovy,可以更好地掌握Android项目的构建过程,包括Gradle插件的使用,如`com.android.application`和`com.android.library`,并能够自定义Gradle插件以解决特定问题。

什么是Gradle

Gradle 是一个基于 JVM 的构建工具。可用于自动化项目的编译,打包,省去人工操作,一方面可以提高效率,解放人工,另一方面可以避免人为错误。

基于 Java 语言的构建工具有:Ant, Gant, Maven。Gradle 吸收了前面三者的优点,形成了新的开源工具,它支持的构建脚本语言有 Groovy, Kotlin,并且 Gradle 还是 Android 官方的构建工具。

  • gradle 构建脚本
    .gradle 的文件格式即为 gradle 脚本文件,build.gradle 是默认的脚本文件。在 gradle 脚本中,有个「任务(Task)」的概念比较核心。

  • Gradle Wrapper
    简称 Gradle 包装器,目的是为了统一 Gradle 环境和版本,保证项目在不同设备上构建的结果一致。使用 Gradle Wrapper 会自动帮我们下载配置指定版本,这样就可以不用关心设备间的差异,得到统一的构建结果。
    通过 gradle -> wrapper -> gradle-wrapper.properties 文件可对 Gradle Wrapper 进行配置。

  • gradle 插件
    Gradle 另一个强大的点就是对插件形式的支持,不仅提高了灵活度,功能扩展也更强大。Gradle 插件分两种类型:
    1.脚本插件
    脚本就是 .gradle 文件,只不过是以插件的形式集成,所以本质上和普通的 gradle 脚本没有区别。
    2.对象插件
    对象插件的特征是需要实现 org.gradle.api.Plugin 接口。按类型引用方式可分为两类:
    -内置对象插件
    是指 Gradle 自带的一些插件,例如 JavaPlugin。
    -第三方对象插件
    是指 Gradle 发行包之外的一些第三方自定义插件,这里也可分为自己定义的插件和引用其他人定义的插件。
    引用他人定义的插件时需要使用 buildscript 来配置依赖,这样 Gradle 才能知道该插件,

buildscript {
    repositories{
        maven {
            url "https://xxxx"
        }
    }
    dependencies{
        classpath "com.jkwen.gradle:gradle-plugin:1.0.0"
    }
}

例如像上面这样配置依赖,然后在 gradle 脚本文件中应用插件即可。
如果是自己定义插件,并且只是在自己项目中使用,可以通过写脚本插件,或者创建 buildSrc 模块来引用。如果想要共享定义的插件,可以通过创建独立项目的方式,上传插件,那样就可以像引用他人插件一样通过配置依赖使用。

什么是Groovy

Groovy 是一种基于 JVM 的面向对象的编程语言,可用于面向对象编程,也可用于脚本编程。

Gradle与Android的关系

Gradle 是 Android 官方指定的构建工具,通过配置插件依赖(Google 为 Gradle 编写的 Android插件),使得在 Android 项目中使用 Gradle 构建更合适。

com.android.application - 应用程序插件

com.android.library - 库插件

以上两个插件是 Android 项目中最常见的。

插件内的各功能作用域(例如 Android{},dependencies{})配置是 Android 构建的关键,

了解Gradle后有什么用

1.知道了 Gradle 的本质,对 Android 项目中的 build.gradle 有了更深的理解,可以修改相应配置更适合自己的项目。

2.可以通过定制 Gradle 插件的形式来解决一些问题或实现功能,例如 asm 插桩。

3.学会用 groovy 语言编写脚本来解决问题。

本书是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。本书从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。 第1章 Activity的生命周期和启动模式 1 1.1 Activity的生命周期全面分析 1 1.1.1 典型情况下的生命周期分析 2 1.1.2 异常情况下的生命周期分析 8 1.2 Activity的启动模式 16 1.2.1 Activity的LaunchMode 16 1.2.2 Activity的Flags 27 1.3 IntentFilter的匹配规则 28 第2章 IPC机制 35 2.1 Android IPC简介 35 2.2 Android中的多进程模式 36 2.2.1 开启多进程模式 36 2.2.2 多进程模式的运行机制 39 2.3 IPC基础概念介绍 42 2.3.1 Serializable接口 42 2.3.2 Parcelable接口 45 2.3.3 Binder 47 2.4 Android中的IPC方式 61 2.4.1 使用Bundle 61 2.4.2 使用文件共享 62 2.4.3 使用Messenger 65 2.4.4 使用AIDL 71 2.4.5 使用ContentProvider 91 2.4.6 使用Socket 103 2.5 Binder连接池 112 2.6 选用合适的IPC方式 121 第3章 View的事件体系 122 3.1 View基础知识 122 3.1.1 什么是View 123 3.1.2 View的位置参数 123 3.1.3 MotionEvent和TouchSlop 125 3.1.4 VelocityTracker、GestureDetector和Scroller 126 3.2 View的滑动 129 3.2.1 使用scrollTo/scrollBy 129 3.2.2 使用动画 131 3.2.3 改变布局参数 133 3.2.4 各种滑动方式的对比 133 3.3 弹性滑动 135 3.3.1 使用Scroller 136 3.3.2 通过动画 138 3.3.3 使用延时策略 139 3.4 View的事件分发机制 140 3.4.1 点击事件的传递规则 140 3.4.2 事件分发的源码解析 144 3.5 View的滑动冲突 154 3.5.1 常见的滑动冲突场景 155 3.5.2 滑动冲突的处理规则 156 3.5.3 滑动冲突的解决方式 157 第4章 View的工作原理 174 4.1 初识ViewRoot和DecorView 174 4.2 理解MeasureSpec 177 4.2.1 MeasureSpec 177 4.2.2 MeasureSpec和LayoutParams的对应关系 178 4.3 View的工作流程 183 4.3.1 measure过程 183 4.3.2 layout过程 193 4.3.3 draw过程 197 4.4 自定义View 199 4.4.1 自定义View的分类 200 4.4.2 自定义View须知 201 4.4.3 自定义View示例 202 4.4.4 自定义View的思想 217 第5章 理解RemoteViews 218 5.1 RemoteViews的应用 218 5.1.1 RemoteViews在通知栏上的应用 219 5.1.2 RemoteViews在桌面小部件上的应用 221 5.1.3 PendingIntent概述 228 5.2 RemoteViews的内部机制 230 5.3 RemoteViews的意义 239 第6章 Android的Drawable 243 6.1 Drawable简介 243 6.2 Drawable的分类 244 6.2.1 BitmapDrawable 244 6.2.2 ShapeDrawable 247 6.2.3 LayerDrawable 251 6.2.4 StateListDrawable 253 6.2.5 LevelListDrawable 255 6.2.6 TransitionDrawable 256 6.2.7 Ins
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值