1.Gradle是什么?
在使用gradle时首先要明白gradle是什么,gradle是一个自动构建工具,它可以自动构建,测试,发布,部署,同时使更多的软件包或其他类型诸如生成静态网站,文档等项目自动化。在开发android过程中,我们会用到许多资源,如图片,文件,jar等。在我们进行打包发布的过程中,这些资源是如何有效的构建,组织在一起的呢?gradle就是这样的一个工具,它能将这些资源有效的构建组织到一起。当然在Eclipse中用到的是Ant,在Android Studio中用到的构建工具才是Gradle.
2.Gradle的基本知识
在用AS(android studio)进行Android项目的开发时,主要用到的gradle文件有三个,如下图:
在三个gradle文件中,第二个和第三个gradle文件用于整个Project,而第一个只用于module项目(AS中工程与项目的概念与eclipse不同,AS中的project相当于eclipse中的工作空间,而module项目相当于eclipse中的一个project.)
下面来看看这三个文件的主要作用:
第一个build.gradle文件内容:
//声明是一个android程序,如果是一个library,就会显示成com.android.library
apply plugin: 'com.android.application'
android {
//编译的sdk版本号
compileSdkVersion 21
//build tools的版本号,即gradle的版本号
buildToolsVersion "21.1.2"
//程序的一些默认配置
defaultConfig {
//程序包名
applicationId "com.fu.dao.li"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
//程序打包时会用到的配置信息,在这里可以配置一些信息,进行多渠道打包
buildTypes {
//debug模式进行打包的信息
debug{
}
//正式发布的版本打包信息
release {
//是否进行混淆打包
minifyEnabled false
//混淆文件的位置,这里有二个混淆文件,第一个是android系统自带的混淆文件,它会随着sdk
的更新自己更新,proguard-rules是我们自己项目混淆的地方
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
//程序所依赖的jar,library等信息
dependencies {
//包含libs文件夹下的所有jar文件
compile fileTree(dir: 'libs', include: ['*.jar'])
//依赖本地的库mylibrary
compile project(':mylibrary')
//依赖的远程library,格式为:包名:依赖库名:所依赖库的版本号
compile 'com.android.support:appcompat-v7:21.0.3'
}
在程序所依赖的dependencies配置信息中,可以依赖本地的jar,library和远程中央仓库JCenter中的library,,,JCenter现在是Android Studio中repositories的默认节点,之前是Maven的,不过JCenter是兼容Maven的,所以放心使用。其实JCenter是一个类似于github,用户可以将自己写的代码上传到这个网站上,等待网站审核通过后,你就可以远程依赖这个代码了,当然已经有很多人将自己的写的代码上传到这个中央仓库中,这里面有很多的开源library,我们只要找到我们需要的library引用就可以了,只要在dependencies中配置下这个远程library信息,gradle就会自动到中央仓库中去下载这个library,不用我们自己去下载了,十分方便。例如:compile’com.android.support:appcompat-v7:21.0.3’, 就是表示依赖中央仓库中包名为com.andrlid.support项目名为appcompat-v7版本号为21.0.3的这个library.
第二个build.gradle文件中的内容
buildscript {
//声明仓库源信息,这个jcenter就是中央仓库
repositories {
jcenter()
}
//声明构建工具及版本号,这里工具是gradle,版本号1.1.0
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
}
allprojects {
//声明仓库源信息
repositories {
jcenter()
}
}
在第二个的gradle文件中,这个文件是全局配置信息,配置信息对所有的module项目都是有效的,其中module中用到的中央仓库在这里进行了声明配置。
第三个setting.gradle文件内容
include ':app','CusomView'
这个文件是也全局的项目配置文件,里面主要声明一些需要加入gradle的module,如果有其它的module也可以按这样的方式入