0%

持续集成(CI) 是一种开发实践方式,需要团队中的开发人员定期集成代码编译,测试工作,通常每天多次,每次推送到主代码仓库都需要通过自动构建进行验证。这种做法有助于尽快发现问题,从而加快开发速度,并提高代码的质量。大拿Martin Fowler写了一篇关于这个主题的文章,解释了这些概念,并描述了持续集成最佳实践

有几种方式可以为Android设置CI。最广泛使用的是Jenkins,TeamCity和Travis CI。Jenkins有最大的生态系统,有大约1000个可用的插件,Jenkins本身是一个开源项目与现在仍然有很多贡献者。TeamCity是JetBrains的产品,JetBrains我们应该都很熟悉,JetBrains也创建了IntelliJ IDEA(Android Studio就是基于此开发的)。 Travis CI是相对较新,主要用于开源项目。

这一章节,我们将学习到这些CI系统,以及如何让Gradle在这些系统上工作。在本章结尾处,还将学到一些Gradle技巧,使自动化CI更容易。

这一章节,主要包括如下几个部分:

  • Jenkins
  • TeamCity
  • Travis CI
  • 更多技巧
阅读全文 »

为了确保项目App或Library的质量,自动化测试非常重要。一直以来,Android开发工具缺乏对自动化测试的支持,但随着Android数年的发展,Google已经付出了很多努力,使开发人员更容易测试Android代码。一些旧框架已更新,并添加了新框架,以确保我们可以彻底测试App和Library。我们不仅可以从Android Studio运行它们,还可以直接从命令行界面使用Gradle运行测试用例。

在本章中,我们将探讨测试Android应用和库的不同测试方法,还将了解Gradle如何构建自动化测试过程。

本章主要包括如下内容:

  • 单元测试
  • 功能(UI)测试
  • 测试覆盖率
阅读全文 »

Android Studio不仅可以为应用和库创建模块,还可以为Android Wear,Android TV,Google App Engine等创建模块。 所有这些模块可以在单个项目中一起管理。 例如,我们可能需要创建一个应用,该应用使用Google Cloud Endpoints作为后端,并包含与Android Wear的集成。 在这种情况下,就需要有一个包含三个不同模块的项目:一个用于手机应用程序,一个用于后端,一个用于Android Wear集成。 了解多模块项目的结构和构建可以显着加快我们的开发效率,缩短开发周期。

Gradle和Gradle Android插件的文档都使用多项目构建(multiproject builds)的术语。 但是,在Android Studio中,模块和项目之间有区别。 模块指的是一个单独应用:例如Android应用程序或Google App Engine后端。而一个项目(Project)是所有模块的集合。在本书中,我们使用术语模块项目与IDE的方式相同,以避免混淆。 在阅读本篇文章内容时请记住这一点。

在本章中,我们将介绍多模块构建的理论,然后展示一些在实际开发中有用的例子:

  • 解析多模块构建
  • 向项目添加模块
  • 最佳实践
阅读全文 »

当我们在开发一款应用时,通常会面临发布不同的版本需求。举两个常见的场景,场景一:我们正在开发新功能,开发完成后需要发布提测版本提交给QA测试人员,测试通过后再发布线上版本,这时线下版本和测试版本的服务器接口域名不一样又或者有不同的api接口;场景二:我们的app需要发布一个免费版本和付费版本,付费版本会有更高的使用权限。针对如上两种情况我们就需要发布四个apk,免费QA版,免费线上版,付费QA版,付费线上版,如果在代码里面硬编码会使得项目异常复杂。gradle针对这种情况,提出了解决这种问题的方法,对于QA版或线上版可以配置build type,Androidstudio默认配置了Debug和Release两种type,对于付费版或者免费版,可以通过配置Build flavors。这两种类型组合起来就叫做build variant

Build types

Gradle在Android中的build type是用来处理app或者library应该被构建成什么类型,在这个配置中,我们可以定义应用的包名是什么,是否自动去除掉没有引用的资源,是否开启混淆等等。具体配置可参考如下代码

阅读全文 »

gradle中的依赖可以说是gradle引以为傲的一个特性,我们只需要添加一行代码,gradle就可以自动通过配置的依赖仓库去下载我们所需要的第三方包,如果依赖的某个项目还会依赖其他的其他的项目,gradle也会通过(传递性依赖:transitive dependencies)自动解决其依赖

依赖仓库

传统的第三方包引用需要下载相应的Jar包,然后加入到项目中,这种方式找Jar包比较繁琐,再就是Jar包的升级比较麻烦,但是通过在gradle中配置一个依赖仓库,在项目中只需要添加一行依赖的代码就能让gadle从指定的仓库中自动下载相应的依赖包。

gradle默认不会添加依赖仓库,但是Android Studio会在project的根build.gradle文件中添加如下代码

阅读全文 »

在上一章节中我们学习了Gradle的用法,以及如何创建Android项目以及如何从Eclipse中将项目转换到Android Studio中。这一章节将介绍构建文件配置的更多细节,以及一些有用的构建任务,并深入Gradle的Android插件。
在本章中,我们将讨论以下主题:

  • 理解Gradle的各种配置文件
  • 初识Build Tasks
  • 自定义构建
阅读全文 »

在2013年的Google Io,出于更好的重用代码和自定义编译流程,Google推出了AndroidStudio和新的编译系统Gradle,AndroidStudio能使用Gradle编译,但是Gradle又能单独部署编译,更方便的做CI。如果你还没有使用AndroidStudio你可以通过Android Developer WebSite下载。
在本篇章节内容中,我们将学习如下内容:

  • 了解Android Studio
  • 了解Gradle基础概念
  • 创建一个新的基于Gradle的项目
  • 使用Gradle wrapper
  • 如何将Eclipse项目转化为Gradle项目
阅读全文 »