android studio的几个build.gradle文件

sugaryaruan 2017-10-13

AndroidStudio是采用Gradle来构建项目的,一个Android项目中包含两个build.gradle文件,如下图:

(1)最外层目录下build.gradle文件

最外层目录下的build.gradle文件代码如下:

buildscript{

repositories{

jcenter()

}

dependencies{

classpath'com.android.tools.build:gradle:2.2.2'

//NOTE:Donotplaceyourapplicationdependencieshere;theybelong

//intheindividualmodulebuild.gradlefiles

}

}

allprojects{

repositories{

jcenter()

}

}

忽略不明白的语法,从字面上我们可以看出,关键有两部分的代码,repositories闭包和dependencies闭包。

1、repositories闭包

该闭包中声明了jcenter()的配置,其中jcenter是一个代码托管仓库,上面托管了很多Android开源项目,在这里配置了jcenter后我们可以在项目中方便引用jcenter上的开源项目。

2、dependencies闭包

该闭包使用classpath声明了一个Gradle插件,由于Gradle并不只是用来构建Android项目,因此此处引入相关插件来构建Android项目,其中'2.2.2'为该插件的版本号,可以根据最新的版本号来调整。

(2)模块目录下build.gradle文件

项目中app模块下的build.gradle文件中的内容如下:

applyplugin:'com.android.application'

android{

compileSdkVersion25

buildToolsVersion"25.0.2"

defaultConfig{

applicationId"com.wkui.douban.easysearch"

minSdkVersion15

targetSdkVersion25

versionCode1

versionName"1.0"

}

buildTypes{

release{

minifyEnabledtrue

proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

}

}

}

dependencies{

compilefileTree(dir:'libs',include:['*.jar'])

compile'com.android.support:appcompat-v7:25.2.0'

testCompile'junit:junit:4.12'

}

从文件内容可以看出,主要分为三大部分:

1、applyplugin

文件中第一行使用applyplugin表示应用了一个插件,该插件一般有两种值可选:

一种为'com.android.application',表示该模块为应用程序模块,可以直接运行;另一种为'com.android.library',表示该模块为库模块,只能作为代码库依附于别的应用程序模块来运行。

2、android闭包

这个闭包主要为了配置项目构建的各种属性,compileSdkVersion用于指定项目的编译版本,25表示使用Android7.1系统的SDK编译。buildToolsVersion用于指定项目构建工具的版本。android闭包中嵌套了defaultConfig闭包和buildTypes闭包:

1)defaultConfig闭包

对项目的更多细节进行配置,其中applicationId指定了项目的包名,我们可以通过修改这个值来修改项目的包名。

minSdkVersion指定项目最低兼容的版本,这里指定为15,表示最低兼容到Android4.0系统。

targetSdkVersion指定的值表示在该目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统的最新功能特性,Android系统平台的行为变更,只有targetSdkVersion的属性值被设置为大于或等于该系统平台的API版本时,才会生效。例如,若指定targetSdkVersion值为22,则表示该程序最高只在Android5.1版本上做过充分测试,在Android6.0系统上(对应targetSdkVersion为23)拥有的新特性如系统运行时权限等功能就不会被启用。

2)buildTypes闭包

这个闭包主要指定生成安装文件的主要配置,一般包含两个子闭包,一个是debug闭包,用于指定生成测试版安装文件的配置,可以忽略不写;另一个是release闭包,用于指定生成正式版安装文件的配置。

上面的代码中省去了debug闭包的内容,只写了release闭包。其中minifyEnabled表明是否对代码进行混淆,true表示对代码进行混淆。proguardFiles指定混淆的规则文件,这里指定了proguard-android.txt文件和proguard-rules.pro文件两个文件,proguard-android.txt文件为默认的混淆文件,里面定义了一些通用的混淆规则。proguard-rules.pro文件位于当前项目的根目录下,可以在该文件中定义一些项目特有的混淆规则。

3、dependencies闭包

该闭包定义了项目的依赖关系,一般项目都有三种依赖方式:本地依赖、库依赖和远程依赖。本地依赖可以对本地的jar包或目录添加依赖关系,库依赖可以对项目中的库模块添加依赖关系,远程依赖可以对jcener库上的开源项目添加依赖关系。

下面对该闭包中定义的语句进行解释。

第一行的compilefileTree是一个本地依赖声明,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径当中。

第二行的compile语句为远程依赖声明,'com.android.support:appcompat-v7:25.2.0'为一个标准的远程依赖库格式,其中com.android.support为域名部分,用于区分不同公司的库;appcompat-v7为组件名称,用于区分同一个公司的不同库;25.2.0为版本号,用于区分同一个库的不同版本。加上这句声明后,Gradle在构建项目时会先检查一下本地是否已经缓存过该库,若没有缓存则自动联网下载,下载后自动添加到项目的构建路径中去。

testCompile语句为声明测试用例库的,暂时没有用到。这里没有用到库依赖声明,若有一个库模块名为helper,那么添加这个库依赖关系需要加入compileproject(':helper')这句声明。

作者:sunnygarden

链接:http://www.jianshu.com/p/9c27dd7938b7

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐