gradle学习一

参考资料:
  • 官方教程,http://developer.android.com/sdk/installing/studio-build.html
  • 官方指南,http://tools.android.com/tech-docs/new-build-system/user-guide
  • funnbo作者碎星,http://www.imid.me/blog/2013/07/27/gradle-basics/
  • gradle批量打包,http://blog.tisa7.com/tech/more-about-gradle.html

关于gradle的基础知识,碎星博客中已经讲的挺清晰的,大概的知识轮廓都有,不过我建议看看官方的教程系统学习一下,能在脑中有个大概的印象。看了一上午,终于对gradle有个大概的印象了。的确是个简单并且功能强大高效的构建系统,比Xcode的构建系统单从语法上来说要简单很多。为了熟悉一下记忆和理解,简单把教程翻译记录一下,顺便锻炼一下弱到家的表达能力。


The Gradle Wrapper

在默认的~/.gradle/目录下面的bin/gradle,打开来看的话,竟然发现是个shell命令,仔细看一下,发现gradle完全是个基于Java的构建系统,gradle命令执行的竟然jar包。这下就能明白为什么android studio中的很多设置不起作用了,原来每个android studio的项目中,都默认包含一个gradle wrapper,官方文档里面解释:
  • A JAR file
  • A properties file
  • A shell script for Windows platforms
  • A shell script for Mac and Linux platforms

使用gradle wrapper的好处是,能保证每次都可以运行在properties文件中定义的wrapper,而不用管本地安装了什么版本的gradle。同时,你也可以针对多个工程是不同版本的gradle。需要注意的两点是,一是这些文件应该放到git上面去,第二点是android studio并不使用gradew即工程里面的shell脚本,这个脚本可以在命令行中使用。


Build configuration

通过gradle build files,可以灵活进行构建工作,但是大多数情况下并不需要进行特定的设置,只需要惯例设置就行。这些构建文件中包含了gradle和android插件的语法和option,可以以下这几个方面对构建进行了配置:
  • Build variants:这个不知道怎么翻译,理解感觉挺像xcode中的target,可以使用同一个工程生成不同的安装包,比如免费版和付费版之类的。
  • Dependencies:依赖,支持module依赖,本地文件依赖和远程项目依赖三种,后面会详细解释
  • Manifest entries:项目文件写入,可以通过构建系统在构建的时候写入不同的manifest文件
  • Signing:签名
  • ProGuard:混淆代码
  • Testing:测试


Projects and modules

Project代表一个完整的Android app,而modules则是app的一个组件,并且这个组件可以单独build,test,debug。modules可以分为下面几种:
  • Java library modules
  • Android library modules: 包含android相关代码和资源,最后生成AAR(Android ARchive)包
  • Android application modules

Android工程在根目录下面有一个构建文件,这个文件里面包含了所有的module,其中每个module都有自己单独的构建文件来进行编译


Denpendencies

依赖如同前面讲到,分为以下几类:
  • Module Dependencies:这里也不知道怎么翻译,暂时称为模块依赖。project module可以在构建文件中包含那些它依赖的其他module,可以在编译的时候包括那些module
  • Remote Dependencies:对于一些远端的工程,没有必要下载拷贝到工程里面。可以android studio支持的maven方式进行依赖,大多数的流行库都能在maven仓库中找到,写法很简单,"group:name:version"就行
  • Local Dependencies:本地类似jar包的二进制文件,.so文件也是这样的
下面的例子,分别为上面三种方式:
dependencies {
    compile project(":lib")
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}


运行gradle

gradle的运行即可以通过Android studio来运行,也可以通过命令行来构建

通过命令行的话,很简单的调用即可,下例构建debug type的apk:
$ chmod +x gradlew
$ ./gradlew assembleDebug
可以使用 "gradlew tasks"来获取工程中所有可用的build task

通过Android studio的话,一开始对android studio不熟悉,还是比较难找,但是找到之后才发现这个IDE是个相当不错的shell
gradle学习一_第1张图片

在Android studio的左下角,有个不起眼的按钮,点击一下,会弹出上图的弹窗,这次才明白下面的消息window显示是如何控制的!跟gradle相关的有两个,一个是"Gradle Console",另外一个是"Gradle",第一个是显示gradle构建过程信息的。第二个则是一个如下图的列表,会显示所有的build task,双击其中的build task,就会像上面命令行调用一样进行构建。下图是wordpress-android中的构建任务列表,双击其中的assembleDebug
gradle学习一_第2张图片

第一篇讲到这里,还有关于一些构建脚本的基本只是,都比较清晰,在创建工程的时候会默认设置,这里不再表达,有点累了,不想写了,后面再写其他的


你可能感兴趣的:(android,Studio)