不同于 Eclispse,Android Studio 是采用 Gradle 来构建项目的,Gradle 是一个非常先进强大的项目构建工具,它使用了一种基于 Groovy 领域的特定语言(DSL)来声明项目设置,摒弃了基于 XML(如 Ant 和 Maven)的各种繁琐的配置,今天我们就来一起探讨 Android Studio 中强大的项目构建工具 Gradle
一、简介
一般来说一个新创建的项目中,有两个 build.gradle 文件,一个是工程目录下的,一个是 app 目录下的,这两个 build.gradle 文件对 Android Studio 项目的作用是非常重要的,接下来我们就新建一个项目来进行详细的分析,这里大家可以随便自己新建一个项目
1)工程目录下的 build.gradle 文件
buildscript {
repositories {
//代码托管仓库
jcenter()
}
dependencies {
//Gradle 插件及使用版本
classpath 'com.android.tools.build:gradle:2.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
//代码托管仓库
jcenter()
}
}
// 运行gradle clean时,执行此处定义的task。
// 该任务继承自Delete,删除根目录中的build目录。
// 相当于执行Delete.delete(rootProject.buildDir)
task clean(type: Delete) {
delete rootProject.buildDir
}这些代码都是自动生成的,这里我们先忽略语法层面的东西,只看关键的部分,首先两处 repositories 的闭包中都生明了 jcenter() 这个配置,其实它是一个代码托管仓库,很多开源的 Android 项目都会选择将代码托管到到 jcenter() 上,声明了这个配置,我们就可以轻松的引用 jcenter() 上任何的开源项目了,接下来,dependencies 闭包中使用 classpath 声明了一个 Gradle 插件,这是因为 Gradle 并不是专门为构建 Android 项目而开发的,Java、C++ 等很多项目都可以使用 Gradle 来构建,因此我们如果想要使用它来构建 Android 项目必须声明 com.anddroid.tools.build:gradle:2.3.0 这个插件,其中最后的数字部分是 Gradle 插件的版本号,到这里我们工程目录下的 build.gradle 就分析完了,通常情况下,这个文件中的内容不需要修改,但是当我们模块化开发的时候,也可以在这里配置全局项目的构建相关的配置
2)app 目录下的 build.gradle 文件
//表明是应用程序的插件
apply plugin: 'com.android.application'
//Android 闭包
android {
//指定项目的编译版本
compileSdkVersion 25
//指定项目的构建工具版本
buildToolsVersion "25.0.3"
defaultConfig {
//指定项目的包名
applicationId "com.example.qiudengjiao.contentprovider"
//指定项目最低兼容的 Android 版本
minSdkVersion 15
//指定项目的最高兼容 Android 版本
targetSdkVersion 25
//指定项目的版本号
versionCode 1
//指定项目的版本名
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
//指定是否对项目的代码进行混淆(true:混淆 false:不混淆)
minifyEnabled false
//proguardFiles用于指定混淆时使用的规则文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
}app 目录下的 build.gradle 文件中的内容相对工程目录下的 build.gradle 文件复杂了很多,不过不要紧,我们一起来看一下,首先第一行应用了一个插件,这里一般有两种值可选
- com.android.application: 表示是一个应用程序模块
- com.android.library: 表示是一个库模块
2193



被折叠的 条评论
为什么被折叠?



