Lee Blog

专注移动开发

0%

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项目
阅读全文 »

Robolectric基于Junit,Junit本身支持断言框架,但是因为语义不清,测试意图表达不明显而广为人诟病,所以在使用Robolectric做单元测试的时候,使用hamcrest作为断言框架使得测试语义更加清晰,下面介绍下hamcrest的使用

阅读全文 »