Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
Ant能打包(构建)apk。----任务执行
Maven管理jar包。(打包很麻烦)----依赖管理
依赖管理:编写程序所需要的jar包,可以称作依赖,程序需要依赖这些jar包来更高效的完成。依赖管理就是指这些依赖(包)进行管理。
任务执行:每次测试都需要生成apk包进行测试,生成apk包是一个可以重复的流程,也可以称为任务,这个过程就叫做任务执行。Ant相当于把这相同的任务给自动化实现了。
Gradle能做ant和maven的事。依赖管理(maven)和任务执行(Ant)
在Android Studio 中新建项目成功后会下载Gradle 地址: Win平台会默认下载到 C:\Documents and Settings<用户名>.gradle\wrapper\dists 目录 gradle-x.xx-all 的文件夹
Gradle在android中基本使用
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')
}
声明了gradle的目录与下载路径以及当前项目使用的gradle版本
声明仓库的源,这里可以看到是指明的jcenter(),jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库。Studio当前版本是1.5,gradle版本也是1.5
其中MVP和app都是module
1.工作空间build.gradle中添加maven仓库的位置
2.项目中的build.gradle引用jar
用冒号分割: groupId:artifactId:version 在项目中就可以使用jar了
来查看下项目所用的Gradle版本 如果你是第一次执行会去下载Gradle,这个过程如果不翻墙非常慢,建议翻墙
下载成功之后会看到信息:
执行这个命令会删除build目录,会看到如下信息:
这个命令会直接编译并生成相应的apk文件,如果看到如下字样就代表build成功了。 Build时失败了两次,对比下demo和依赖库中是没有lint检查。添加后build成功了
app/build/outputs/apk 目录下会看到类似于app-debug-unaligned.apk, app-release-unsigned.apk等,看名字应该能理解意思,unaligned代表没有进行zip优化的,unsigned代表没有签 名的。然后就可以直接安装apk查看运行效果了。
App/build.gradle
配置之后每次再build的时就会生成签过名的包了
task hello { doLast{ println "hello world" } }
这个构建的脚本很简单,就是输出hello world。为了运行这个构建,我们应该在当前目录下执行 "gradle hello",即gradle TaskName。 doLast意思是定义一个行为(映射Gradle中的Action类),放在当前task的最后,类似的,还有doFirst, 表示将定义的行为放在当前task最前面,例如
task hello {
doLast{
println "Hello world"
}
doFirst{
println "I am xxx"
}
}
执行gradle hello, 将输出 "I am xxx" "Hello world"
另外,你也可以使用如下更简洁的方式来定义task:
task hello << {
println "hello world"
}