0%

本篇文章翻译自官方介绍文档(原文)

本篇文章介绍了如何在Android开发中使用Android的Data Binding库来减少开发中的胶水代码(组织布局和业务逻辑的代码)。
Data Binding库支持在Android 2.1(API level 7)及以上版本中使用。
使用Data Binding,Gradle的Android插件需要使用1.5.0-alpha1及以上版本。具体配置可参考如何更新Gradle Android插件?

阅读全文 »

ConstraintLayout使用实践

ConstraintLayout是2017年Google IO上推出的一种新的布局方式,相较于其他几种布局(LinearLayout,RelativeLayout等),ConstraintLayout设计用于构造扁平的布局层级,减少layout的嵌套,从而提升界面绘制的速度,在布局中使用ConstraintLayout性能比其他几种布局会提升很多,后面我们会详细介绍到。

Why ConstraintLayout?

阅读全文 »

现在我们知道了Gradle如何工作,如何创建自定义任务和插件、如何运行测试、以及如何设置持续集成环境,我们在Gradle已经小有所成。本章包含了我们在前面几章中没有提到的一些优化技巧,这些技巧使我们可以更轻松地使用Gradle构建,开发和部署Android项目。

在本章中,我们将学习到以下主题:

  • 压缩Apk大小
  • 加快Build速度
  • 忽略Lint检查
  • 在Gradle中使用Ant
  • 应用发布的高级技巧

首先我们来看下如何减小构建Apk的体积大小。

阅读全文 »

持续集成(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应该被构建成什么类型,在这个配置中,我们可以定义应用的包名是什么,是否自动去除掉没有引用的资源,是否开启混淆等等。具体配置可参考如下代码

阅读全文 »