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

(1)最外层目录下build.gradle文件
最外层目录下的build.gradle文件代码如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
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文件中的内容如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.wkui.douban.easysearch"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
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'
}
从文件内容可以看出,主要分为三大部分:
1、apply plugin
文件中第一行使用apply plugin表示应用了一个插件,该插件一般有两种值可选:
一种为'com.android.application',表示该模块为应用程序模块,可以直接运行;另一种为'com.android.library',表示该模块为库模块,只能作为代码库依附于别的应用程序模块来运行。
2、android闭包
这个闭包主要为了配置项目构建的各种属性,compileSdkVersion用于指定项目的编译版本,25表示使用Android 7.1系统的SDK编译。buildToolsVersion用于指定项目构建工具的版本。android闭包中嵌套了defaultConfig闭包和buildTypes闭包:
1) defaultConfig闭包
对项目的更多细节进行配置,其中applicationId指定了项目的包名,我们可以通过修改这个值来修改项目的包名。
minSdkVersion指定项目最低兼容的版本,这里指定为15,表示最低兼容到Android 4.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库上的开源项目添加依赖关系。
下面对该闭包中定义的语句进行解释。
第一行的compile fileTree是一个本地依赖声明,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径当中。
第二行的compile语句为 远程依赖声明,'com.android.support:appcompat-v7:25.2.0'为一个标准的远程依赖库格式,其中com.android.support为域名部分,用于区分不同公司的库;appcompat-v7为组件名称,用于区分同一个公司的不同库;25.2.0为版本号,用于区分同一个库的不同版本。加上这句声明后,Gradle在构建项目时会先检查一下本地是否已经缓存过该库,若没有缓存则自动联网下载,下载后自动添加到项目的构建路径中去。
testCompile语句为声明测试用例库的,暂时没有用到。这里没有用到库依赖声明,若有一个库模块名为helper,那么添加这个库依赖关系需要加入compile project(':helper')这句声明。
作者:sunnygarden
链接:https://www.jianshu.com/p/9c27dd7938b7
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
AndroidStudio中builde.gradle文件详解的更多相关文章
- C#中web.config文件详解
C#中web.config文件详解 一.认识Web.config文件 Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NE ...
- Android学习之基础知识二(build.gradle文件详解)
一.详解build.gradle文件 1.Android Studio是采用Gradle来创建项目的,Gradle是非常先进的构建的项目的工具,基于Groovy领域特定的语言(DSL)来声明项目配置, ...
- ectouch第十讲 之ecshop中 dwt, lbi 文件详解
原文:http://www.yunmoban.cn/article-241.html Ecshop包括的文件夹有admin.api.cert.data.images.includes.js. lang ...
- build.gradle文件详解<转> 推荐
apply plugin: 'com.android.application'//说明module的类型,com.android.application为程序,com.android.library为 ...
- Spring中的applicationContext文件详解
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Linux中的.bash_ 文件详解
目录 .bash_history .bash_logout .bash_profile .bashrc 每个用户的根目录下都有四个这样的 bash文件,他们是隐藏文件,需要使用-a参数才会显示出来 . ...
- gradle中的build script详解
目录 简介 project和task 一个例子 task详细讲解 task脚本 task依赖 动态task 默认task build script的外部依赖 gradle中的build script详 ...
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
- Liunx中fstab文件详解
Liunx中fstab文件详解 /etc/fstab是用来存放文件系统的静态信息的文件.位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc ...
随机推荐
- JS模块化开发(二)——构建工具grunt
gruntJs——构建工具:代码压缩.文件合并 安装流程: 1.到nodeJs官网下载安装nodeJs(附带了npm包管理工具) 2.cmd命令行:npm install -g grunt-cli / ...
- Educational Codeforces Round 42 (Rated for Div. 2) E. Byteland, Berland and Disputed Cities
http://codeforces.com/contest/962/problem/E E. Byteland, Berland and Disputed Cities time limit per ...
- Makefile ------ 在Makefile中进行宏定义-D
在Makefile中我们可以通过宏定义来控制源程序的编译.只要在Makefile中的CFLAGS(变量名随意)中通过选项-D来指定你于定义的宏即可. 如:CFLAGS += -D _YUQIANG在编 ...
- scatter
一.matplotlib.pyplot.scatter用来画散点图 import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcPar ...
- Python基础【day03】:入门知识拾遗(八)
本节内容 1.作用域 2.三元运算 3.进制 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1: name = 'wupeiq ...
- JavaEE学习总结(十二)—MyEclipse开发工具与HTML
一.MyEclipse MyEclipse,是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能 ...
- idea常用快捷键及自定义快捷键汇总
以下都是挨个进行验证过的 生成get和set方法为:alt+insert 自动补全返回值,自动补全变量名称和属性名称:ctrl+alt+v 输入System.out.println()的快捷方法是:输 ...
- 04-MySQL的存储引擎和列的常用类型
1. MySQL中的数据库分类 2. MySQL中的存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并 ...
- Python3.X爬虫
1.Python很有名,但是一直没在实际项目中用过,今天花30分钟学习下.去Python官网https://www.python.org/downloads/ 2.2.X与3.X版本相差比较大,新手用 ...
- C# dll 在注册表中寻找
“{7713F78A-44DE-42BA-A1F6-3FB0BD6CA63B}”就是该Dll的唯一ID啦,每一个Dll文件都会不一样的. 但是,问题又来了,怎么样知道它的唯一ID呢?其实很简单,那就是 ...