您的位置:首页 > 产品设计 > UI/UE

详解Android studio的构建文件build.gradle

2017-07-24 11:42 465 查看
在Android studio 中采用gradle 来构建项目,当项目创建后,会自动生成两个build.gradle文件,一个在项目根目录下,一个是在App目录下。这两个文件对构建Android studio项目起到至关重要的作用,下面我们就来详细解说这两个文件的内容。

首先,最外层项目目录下的build.gradle文件, 代码如下所示:

buildscript{

repositories{
jcenter()
}

dependencies{
clashpath 'com.android.tools.build:gradle:2.2.3'
}

}

allprojects {

repositories{
jcenter()
}
}


这些代码都是自动生成的,虽然语法结构看上去很难理解,但是如果我们忽略语法结构,只看关键部分,还是很好懂的。

   在这个文件中,我们只用关注两个地方:

两个 repositories 闭包中都声明了jcenter() 这行配置, jcenter其实是一个代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上,声明这行配置后,我们就可以在项目中轻松引用任何jcenter上的开源项目了。
dependencies闭包中使用classpath声明了一个gradle插件。gradle并不是专门为android开发的,gradle也可以用在java,c++等很多项目中,因此想要在Android项目中使用它来构建项目,需要声明gradle插件:com.android.tools.build:gradle:2.2.3, 最后面的2.2.3是指插件的版本号。
这里我们的最外层build.gradle文件分析结束了,通常情况下这个文件并不要修改,除非你要添加一些全局的项目构建配置。

下面我们来解说app目录下的build.gradle文件,代码如下所示:

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.test.android.helloworld"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:25.2.0'
testCompile 'junit:junit:4.12'
}


这个文件中的内容较为复杂,我们一行行分析:

apply plugin: 'com.android.appllication' 
一般情况有两个值可以选择,‘com.android.application'表示这是一个应用程序模块,'com.android.library'表示这是一个库模块,两者最大的区别在于,一个可以独立直接运行,一个需要依附于应用程序模块来运行

android : 在android闭包中用来配置项目构建时相关的属性

compileSdkVersion
25 -  用于指定项目的编译版本,25是指项目编译 用的是Android 7.1的sdk版本

buildToolsVersion
"25.0.2" 用于指定构建工具使用的版本号

defaultConfig
- 这个闭包里对当前项目的更多细节进行配置

applicationId
- 这个属性指定了应用程序的包名,当创建项目的时候包名已经建立,如果想要修改,可以从这里修改

minSdkVersion 19
-  用于指定当前项目最低兼容的Android系统版本号。

targetSdkVersion 25 -
用于指定当前项目在目标Sdk版本上已经做过充分的测试,系统可以为你的应用程序支持新的功能和特性

versionCode 1 - 用于指定当前项目的版本号

versionName "1.0" -
用于指定当前项目的版本名

buildTypes : buildTypes 闭包用于指定生成安装文件所需的配置,通常情况下包含两个类型的子闭包,一个是debug,一个是release,debug用于指定生成测试版本的安装文件所需的配置,release用于指定生成正式安装文件的相关配置,下面解释release包内的属性配置。通常使用Android studio直接运行项目生成的都是测试版的安装文件

minifyEnabled
- 用于指定是否对项目的代码进行混淆,true表示混淆,false表示不混淆

'proguardFiles getDefaultProguardFile('Proguard-android.txt'), 'proguard-rules.pro‘

proguardFiles 用于指定混淆时使用的规则文件,这里指定了两个文件,一个Proguard-android.txt文件是所有项目通用的混淆规则,位于Android SDK 目录下,一个proguard-rules.pro 文件是用于编写当前项目特有的混淆规则,位于当前项目的根目录下

 dependencies 这个闭包功能非常强大,指定了当前项目的所有依赖关系。通常Android studio 存在3种依赖关系: 本地依赖,库依赖,远程依赖。 本地依赖是指将本地的jar包或者目录添加依赖关系,库依赖是指对项目中的库模块添加依赖关系,远程依赖是指将jcenter库中的开源项目添加依赖关系。

compile fileTree(dir: 'libs', include:['*.jar']) - 这是一个本地依赖的声明方式,指将libs目录下的所有.jar后缀文件添加到项目构建路径中。

compile 'com.android.support:appcompat-v7:25.2.0'
-这是一个标准的远程依赖的声明方式,com.android.support:是域的名字,用与和其他公司的库做区分,appcompat-v7 是组名称,用于和同一公司中的不同库做区分,25.2.0 版本号,用于和同一库中的不用版本做区分。gradle在构建之前会在本地检查是否已经存在库的缓存,然后才去联网自动下载,添加到构建路径中去。

compile project (':helper') -这个是库依赖的声明方式,gradle文件中没有这行,helper是库模块的名称,这句声明就可以在构建的时候添加到路径中。

到这里两个gradle文件讲解就结束了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: