Android之Gradle

1.引言
AndroidStudio使用Gradle做项目构建、打包和部署。像Maven,但是使用的是脚本语言:Groovy。 传送门很明显的一点就是你可以直接使用命令行来做原本IDE完成的事情,意味着可以自动化我们的构建过程。学习Gradle你需要了解到Java、Android、Groovy,还好不需要去深入研究它们。


2.Android开发中使用Gradle构建的一些知识点

针对Android应用程序增加了特性有:
- 构建类型build type
- 定制product flavor
- 签名管理signing configuration
- 库项目library project

这里插入新建一个Android项目的时候IDE会自动生成3个Gradle文件:setting.gradle、build.gradle和app/build.gradle




Android项目是多项目Gradle构建。Settting.gradle文件显示了每个子目录所对应的子项目。

include ‘:app'
include表示app子目录是唯一的子项目。我们在添加库项目的时候会发现该文件也会添加对应的库项目名称。

通过gradle的apply功能,将Android插件添加到构建系统中,从而能够使用Android段的领域特定语言(DSL)配置。
distributionUrl = ""   显示了wrapper会下载并安装Gradle版本。

第一次运行后,这个Gradle的发行版本会被缓存到zipStoreBase下的zipStorePath目录,并被用于后续的Gradle任务的执行。




Unix上运行使用wrapper
./gradlew
Windows上运行gradlew.bat命令。


可以通过空格来分割运行多个任务
执行多个任务: > ./gradlew lint assembleDebug
可以通过 -x标志来不执行某一个任务。
示例:不执行lintDebug
> ./gradlew assembleDebug -x lintDebug


tasks命令加上 --all标志不仅显示项目中所有的构建任务,也显示每个任务的依赖。
gradle tasks --all




可以在命令行中使用任务名字的缩写,只要提供的字符足够指定这个是唯一的任务。示例:
每个配置的依赖树


> ./gradlew anDep
:app:androidDependencies




若构建文件不叫build.gradle,使用-b标志来指定一个构建文件名,如:
> ./gradlew -b app.gradle


AndroidStudio中运行Gradle--使用Gradle视图执行任务


添加Java库的依赖
基本语法 - Gradle支持几种不同的方式来定义依赖。最常用的就是使用引号,并通过冒号分隔开组名、名字和版本号。


依赖的完整语法:testCompile group: 'junit',name:'junit',version:'4.12'
依赖的快捷语法:testCompile 'junit:junit:4.12'   (默认使用的就是它的形式)


想要添加一系列的文件到配置中,但又希望将它们添加到一个库中,可以在dependencies中使用files或者fileTree语法。


Gradle需要知道去哪里搜索并解析依赖,这就需通过repositories块实现。


Java项目中Gradle命令dependencies可以用来查看传递依赖。Android中使用的是AndroidDependencies命令。
示例:查看ANDROID依赖
> ./gradlew androidDependencies


禁用传递依赖--transitive标志
使其值为false,就可阻止传递依赖的下载。


只引入模块jar的完整语法
dependencies{
compile 'org.codehaus.groovy:groovy-all:2.4.4@jar'
compile group:'org.codehaus.groovy',name:'groovy-all',version:'2.4.4',ext:'jar'
}


从dependcies块中排除一个传递依赖
dependcies{
androidTestCompile('org.spockframework:spock-core:1.0-groovy-2.4'){
exclude group:'org.codehaus.groovy'
exclude group:'junit'
}
}
这样就不会包含Groovy依赖和JUnit库。




repositories{
mavenLocal()   本地Maven缓存
mavenCentral() 公用Maven中央仓库
}


从URL添加Maven仓库
repositories{
maven{
  url'http://repo.spring.io/milestone'
}
}


通过密码保护的仓库可以使用一个credentials块
repositories{
maven{
credentials{
   username 'username'
   password 'password'
}
url 'http://repo.mycompany.com/maven2'
}
}


使用一个ivy仓库
repositories{
ivy{
url 'http://my.ivy.repo'
}
}




使用一个本地目录作为一个仓库
repositories{
flatDir{
  dirs 'lib'
}
}


设置项目属性
使用ext块(代表extra)配置通用的值。一次定义变量,全局使用。
命令行使用-p标志来设置。

packagingOptions块使用,exclude来移除冲突文件或啥文件









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值