具体描述
Gradle是Android开发小组于2013年推出的Android 应用首选构建系统。Gradle可以很容易地扩展构建,并插入现有的构建过程中。它提供了一套类Groovy的DSL语言,用于申明构建和创建任务,让依赖管理变得更加简单。此外,它还是完全免费和开源的。
《Gradle for Android 中文版》共9章,依次介绍了Gradle的基础知识、基本自定义构建、依赖管理、创建构建Variants、管理多模块构建、运行测试、创建任务和插件、设置持续集成,以及高级自定义构建。
《Gradle for Android 中文版》是为那些希望成为构建能手的Android开发者编写的。
作者简介
目录信息
1.1 Android Studio 1
1.2 理解Gradle基础 3
1.2.1 项目和任务 3
1.2.2 构建生命周期 4
1.2.3 构建配置文件 4
1.2.4 项目结构 5
1.3 创建新项目 6
1.4 Gradle Wrapper入门 10
1.4.1 获取Gradle Wrapper 10
1.4.2 运行基本构建任务 12
1.5 迁移出Eclipse 13
1.5.1 导入向导 13
1.5.2 手动迁移 15
1.6 总结 17
2 基本自定义构建 19
2.1 理解Gradle文件 19
2.1.1 settings 文件 20
2.1.2 顶层构建文件 20
2.1.3 模块的构建文件 21
2.2 任务入门 23
2.2.1 基础任务 24
2.2.2 Android 任务 24
2.2.3 Android Studio 25
2.3 自定义构建 27
2.3.1 操控manifest 条目 28
2.3.2 BuildConfig 和资源 29
2.3.3 项目范围的设置 30
2.3.4 项目属性 30
2.3.5 默认的任务 32
2.4 总结 32
3 依赖管理 33
3.1 依赖仓库 33
3.1.1 预定义依赖仓库 34
3.1.2 远程仓库 35
3.1.3 本地仓库 36
3.2 本地依赖 37
3.2.1 文件依赖 37
3.2.2 原生依赖库 37
3.2.3 依赖项目 38
3.3 依赖概念 39
3.3.1 配置 39
3.3.2 语义化版本 40
3.3.3 动态化版本 40
3.4 Android Studio 41
3.5 总结 43
4 创建构建Variant 44
4.1 构建类型 45
4.1.1 创建构建类型 45
4.1.2 源集 47
4.1.3 依赖 49
4.2 product flavor 49
4.2.1 创建product flavor 49
4.2.2 源集 50
4.2.3 多种定制的版本 50
4.3 构建variant 51
4.3.1 任务 52
4.3.2 源集 52
4.3.3 源集合并资源和manifest 52
4.3.4 创建构建variant 53
4.3.5 variant 过滤器 55
4.4 签名配置 56
4.5 总结 58
5 管理多模块构建 59
5.1 解剖多模块构建 59
5.1.1 重访构建生命周期 61
5.1.2 模块任务 62
5.2 将模块添加到项目 62
5.2.1 添加一个Java 依赖库 63
5.2.2 添加一个Android 依赖库 64
5.2.3 融合Android Wear 64
5.2.4 使用Google App Engine 65
5.3 提示和最佳实践 69
5.3.1 在Android Studio 中运行模块任务 69
5.3.2 加速多模块构建 70
5.3.3 模块耦合 70
5.4 总结 71
6 运行测试 72
6.1 单元测试 72
6.1.1 JUnit 72
6.1.2 Robolectric 76
6.2 功能测试 77
6.3 测试覆盖率 81
6.4 总结 82
7 创建任务和插件 83
7.1 理解Groovy 83
7.1.1 简介 84
7.1.2 类和成员变量 85
7.1.3 方法 85
7.1.4 Closures 86
7.1.5 集合 87
7.1.6 Gradle 中的Groovy 88
7.2 任务入门 89
7.2.1 定义任务 89
7.2.2 任务剖析 91
7.2.3 使用任务来简化release 过程 94
7.3 Hook到Android插件 97
7.3.1 自动重命名APK 97
7.3.2 动态创建新的任务 98
7.4 创建自己的插件 100
7.4.1 创建一个简单的插件 100
7.4.2 分发插件 101
7.4.3 使用自定义插件 103
7.5 总结 104
8 设置持续集成 105
8.1 Jenkins 105
8.1.1 设置Jenkins 106
8.1.2 配置构建 107
8.2 TeamCity 109
8.2.1 设置TeamCity 110
8.2.2 配置构建 110
8.3 Travis CI 111
8.4 自动化进阶 113
8.4.1 SDK mananger 插件 114
8.4.2 运行测试 114
8.4.3 持续部署 115
8.4.4 Beta 分发包 116
8.5 总结 117
9 高级自定义构建 118
9.1 减少APK文件大小 118
9.1.1 ProGuard 119
9.1.2 缩减资源 120
9.2 加速构建 121
9.2.1 Gradle 参数 122
9.2.2 Android Studio 123
9.2.3 Profiling 124
9.2.4 Jack 和Jill 125
9.3 忽略Lint 126
9.4 在Gradle中使用Ant 126
9.4.1 在Gradle 中运行Ant 任务 126
9.4.2 导入整个Ant 脚本 127
9.4.3 属性 129
9.5 高级应用部署 129
9.6 总结 131
· · · · · · (收起)
读后感
略有翻译感是译作不可避免的事情,但是翻译与惯用方法不同或者略有错愕,难免让人感觉疑惑。 对照原文可见端倪。 Every Android Project needs to apply the Android plugin using this line: 每一个Android项目都应该申请该插件: apply的意思是应用。 中文第4页。 When...
略有翻译感是译作不可避免的事情,但是翻译与惯用方法不同或者略有错愕,难免让人感觉疑惑。 对照原文可见端倪。 Every Android Project needs to apply the Android plugin using this line: 每一个Android项目都应该申请该插件: apply的意思是应用。 中文第4页。 When...
针对gradle新人来说还是比较适合入门的一本书,比起网上找博客支离破碎地讲解,书本还算比较系统,但这本书出版的时间比较久远了,当中的一些知识也算是比较陈旧的。要深入研究还是需要去查看官方文档。 其中讲解了持续集成的方案是自己以前没有接触过的,看了书本后自己倒腾了...
针对gradle新人来说还是比较适合入门的一本书,比起网上找博客支离破碎地讲解,书本还算比较系统,但这本书出版的时间比较久远了,当中的一些知识也算是比较陈旧的。要深入研究还是需要去查看官方文档。 其中讲解了持续集成的方案是自己以前没有接触过的,看了书本后自己倒腾了...
略有翻译感是译作不可避免的事情,但是翻译与惯用方法不同或者略有错愕,难免让人感觉疑惑。 对照原文可见端倪。 Every Android Project needs to apply the Android plugin using this line: 每一个Android项目都应该申请该插件: apply的意思是应用。 中文第4页。 When...
用户评价
这本书的实用性和前瞻性达到了一个很高的平衡点。它既没有沉溺于过时的Gradle版本特性,而是紧密贴合当前Android生态的主流实践,比如对Kotlin DSL的介绍和应用,这一点对于注重现代化和可读性的现代开发者来说至关重要。很多旧的技术文档在讲解Gradle脚本时,还停留在Groovy时代,但这本书很早就意识到了Kotlin DSL的优势,并提供了大量的迁移思路和实战写法。更让我眼前一亮的是,书中关于测试构建的章节,它没有简单地讲单元测试的配置,而是深入探讨了如何使用Gradle来管理集成测试环境,如何模拟不同的设备状态,甚至如何生成可复现的构建快照用于故障排查。这对于我们团队进行端到端测试的自动化部署帮助极大。市面上很多构建工具的书籍往往只关注“如何让项目跑起来”,而这本书关注的是“如何让项目高效、健壮、可维护地跑起来”,这种视角上的提升,体现了编著者深厚的行业积累,绝对不是一般的教程可以比拟的。
阅读这本书的过程,与其说是学习一门技术,不如说是在进行一次系统性的工程思维重塑。它成功地将Gradle这个强大的构建工具,从一个令人头疼的“黑箱配置”提升为了一个可以被精细调控的“构建引擎”。我尤其欣赏作者在处理复杂场景时的那种冷静和条理性。比如,在讲解多模块依赖管理时,书中不仅展示了传统的`implementation`和`api`关键字,还引入了`outgoing variants`的概念,详细说明了如何为不同的消费方提供定制化的依赖产物,这在处理库的内部依赖抽象化时,简直是神器级的知识点。对我个人而言,这本书带来的最大改变是心态上的转变——从被动接受IDE生成的配置,转变为主动设计和掌控整个构建流程。每当遇到新的需求,比如引入新的代码生成插件,或者需要定制发布到内部Maven仓库的策略时,我不再是先去论坛上搜索现成的解决方案,而是能基于书中学到的模块化、抽象化思想,自己设计出优雅的Gradle脚本片段。这种“内化知识”的体验,是碎片化学习无法替代的。
这本书的深度和广度,让它远远超越了一本普通的“速查手册”定位。它更像是一本针对Android构建系统深度开发的“内功心法”。我注意到书中对Gradle Wrapper的机制、自定义Task的生命周期钩子、以及如何有效地利用缓存策略进行性能优化等方面,都有着教科书般的讲解。那些关于如何编写可复用的构建逻辑、如何将复杂的构建逻辑抽象成内部Plugin的篇章,对于我们公司这种拥有多个团队、需要统一构建标准的组织来说,简直是及时雨。编写Plugin的过程,书中讲解得非常透彻,从如何定义Extension、如何注册Task,到如何确保插件的兼容性,每一步都辅以清晰的流程图和代码解析,极大地降低了我们团队采用自定义构建逻辑的门槛。老实说,读完这本书,我不仅能解决当前项目中的所有Gradle难题,更重要的是,我获得了设计未来大型Android项目稳定、高效构建体系的底层能力。它不是教你修补漏洞,而是教你如何建造一座坚固的堡垒。
这本书的行文风格颇具匠气,它不像很多技术书籍那样,上来就抛出大量的术语和代码片段,而是采取了一种循序渐进的叙述方式,仿佛一位经验丰富的资深构建工程师在旁边手把手地指导你。我尤其喜欢它在解释一些高级概念时所采用的比喻和类比,比如将依赖冲突比作“图书馆里两本同名但内容不同的书”,一下子就让抽象的冲突解决变得具体可感。在涉及Android特有的构建流程,比如Flavor配置、Build Type隔离、以及如何集成第三方库进行代码植入(Aspect-Oriented Programming)时,作者的讲解细致入微,每一个关键点都配上了简洁明了的示例代码块。我曾经花了好几天时间在尝试优化我们团队那个动辄几分钟的CI编译时间,但总感觉不得要领。直到我认真研读了书中关于并行构建和配置缓存的那几个章节后,茅塞顿开。它不仅仅是告诉你“应该用这个命令”,更是解释了Gradle底层如何利用Worker API和Daemon进程来加速构建,这种对原理的深挖,是其他教程难以比拟的。读完后,我对Gradle的信心大大增强,不再畏惧那些庞大且复杂的项目构建设置。
这本书的封面设计得相当简洁有力,采用了深沉的蓝灰色调,中间是醒目的橙色标题“Gradle for Android 中文版”,给人一种专业、可靠的感觉。拿到手里沉甸甸的,就知道内容一定相当充实。我最初接触到这本书,是因为在构建一个复杂的Android项目时,遇到了大量的Gradle配置问题,比如依赖管理混乱、多模块编译效率低下,甚至自定义Task时抓耳挠腮却无从下手。网上的零散资料虽然多,但总感觉不成体系,缺乏一个权威的、能从基础讲到进阶的指南。这本书的出现,恰恰填补了这个空白。我特别欣赏它没有停留在讲解基础的`build.gradle`文件语法,而是深入剖析了Gradle的生命周期、依赖解析机制,以及如何利用`plugins`和`scripts`来构建高度可复用的构建逻辑。对于一个习惯了依赖IDE自动生成配置的开发者来说,这本书就像是打开了一扇通往幕后世界的门,让你真正理解“为什么”要这么写,而不是盲目地复制粘贴。翻开目录,结构安排得非常清晰,从初识到精通,每一步都有详实的讲解和实战案例支撑,这对于我们这类需要“知其所以然”的工程师来说,无疑是宝贵的财富。
太入门,感觉没啥干货,做过几年开发的都懂!
太入门,感觉没啥干货,做过几年开发的都懂!
太入门,感觉没啥干货,做过几年开发的都懂!
如果你对android工程中gradle配置一脸茫然或者不甚了解,就适合看此书。 非常适合作为入门书,常用方法都涵盖了,而且书很薄,篇幅短小,看起来不会有压力。大部头的书太多,短小精悍的书弥足珍贵,为此给五分! 更深入可看《Gradle in action》、Groovy语言
如果你对android工程中gradle配置一脸茫然或者不甚了解,就适合看此书。 非常适合作为入门书,常用方法都涵盖了,而且书很薄,篇幅短小,看起来不会有压力。大部头的书太多,短小精悍的书弥足珍贵,为此给五分! 更深入可看《Gradle in action》、Groovy语言