什么是Gradle?
Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
为什么用Gradle
代码语言:javascript复制Ant能打包(构建)apk。----任务执行
Maven管理jar包。(打包很麻烦)----依赖管理
依赖管理:编写程序所需要的jar包,可以称作依赖,程序需要依赖这些jar包来更高效的完成。依赖管理就是指这些依赖(包)进行管理。
任务执行:每次测试都需要生成apk包进行测试,生成apk包是一个可以重复的流程,也可以称为任务,这个过程就叫做任务执行。Ant相当于把这相同的任务给自动化实现了。
Gradle能做ant和maven的事。依赖管理(maven)和任务执行(Ant)
Gradle的下载
在Android Studio 中新建项目成功后会下载Gradle 地址: Win平台会默认下载到 C:Documents and Settings<用户名>.gradlewrapperdists 目录 gradle-x.xx-all 的文件夹
Gradle在android中基本使用
Gradle在android中基本使用
1.mobile-stage/app/build.gradle
代码语言:javascript复制apply plugin: 'com.android.application'
//声明是Android程序
android {
//编译sdk的版本
compileSdkVersion 22
//android打包工具版本
buildToolsVersion "23.0.3"
defaultConfig {
//应用的包名
applicationId "cn.gyyx.phonekey"
minSdkVersion 10
targetSdkVersion 22
versionCode 17
versionName "2.1.2.2"
}
buildTypes {
release {
//是否混淆
minifyEnabled false
//混淆文件的位置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//移除lint检查的error
lintOptions {
abortOnError false
}
}
dependencies {
//编译libs目录下的所有jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:design:22.2.1'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.google.code.gson:gson:2.2.4'
compile files('libraries/xUtils-2.6.14.jar')
}
2.mobile-stage/app/gradle/ gradle-wrapper.properties
声明了gradle的目录与下载路径以及当前项目使用的gradle版本
3.mobile-stage/ build.gradle
声明仓库的源,这里可以看到是指明的jcenter(),jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库。Studio当前版本是1.5,gradle版本也是1.5
4.mobile-stage/settings.gradle
其中MVP和app都是module
5如何引用maven中的jar
1.工作空间build.gradle中添加maven仓库的位置
2.项目中的build.gradle引用jar
用冒号分割: groupId:artifactId:version 在项目中就可以使用jar了
Gradle生成apk
切换到项目的根目录,执行gradlew -v
来查看下项目所用的Gradle版本 如果你是第一次执行会去下载Gradle,这个过程如果不翻墙非常慢,建议翻墙
下载成功之后会看到信息:
执行gradlew clean
执行这个命令会删除build目录,会看到如下信息:
最后执行gradlew build
这个命令会直接编译并生成相应的apk文件,如果看到如下字样就代表build成功了。 Build时失败了两次,对比下demo和依赖库中是没有lint检查。添加后build成功了
app/build/outputs/apk 目录下会看到类似于app-debug-unaligned.apk, app-release-unsigned.apk等,看名字应该能理解意思,unaligned代表没有进行zip优化的,unsigned代表没有签 名的。然后就可以直接安装apk查看运行效果了。
生成签名后的apk
App/build.gradle
配置之后每次再build的时就会生成签过名的包了
Gradle其它操作
- Project 和 Task Gradle中有两个基本的概 念:project和task。每个Gradle的构建由一个project构成,它代表着需要被构建的组件或者构建的整个项目。每个project由一 个或者多个task组成。task代表着Gradle构建过程中可执行的最小单元。例如当构建一个组件时,可能需要先编译、打包、然后再生成文档或者发布 等,这其中的每个步骤都可以定义成一个task。
- 构建第一个Task 和Ant运行时读取build.xml类似,Gradle运行时默认会读取build.gradle这个文件, 当然你也可以使用参数"-b"来指定其他的xxx.gradle 下面,让我们新建一个build.gradle文件,然后输入如下内容:
task hello { doLast{ println "hello world" } }
这个构建的脚本很简单,就是输出hello world。为了运行这个构建,我们应该在当前目录下执行 "gradle hello",即gradle TaskName。 doLast意思是定义一个行为(映射Gradle中的Action类),放在当前task的最后,类似的,还有doFirst, 表示将定义的行为放在当前task最前面,例如
代码语言:javascript复制task hello {
doLast{
println "Hello world"
}
doFirst{
println "I am xxx"
}
}
执行gradle hello, 将输出 "I am xxx" "Hello world"
另外,你也可以使用如下更简洁的方式来定义task:
代码语言:javascript复制task hello << {
println "hello world"
}