整个项目中的build.gradle文件
AndroidStudio 3.0版本之前:
一般效果如图:
1
在这个文件中你可以给此project中的所有的moudle配置公共基础选项。
2 buildscript闭包
表示配置gradle脚本执行所需要的信息
其中的repositories闭包表示指定代码托管库(或者说是仓库的源),这里指定仓库源是jcenter,
简单来讲可以说是网址的头,翻译过来就是 :https://jcenter.bintray.com(不标准)
其中dependencies:表示依赖性,这里指定的是'com.android.tools.build:gradle:2.3.1'
如果需要的话,gradle下载对应版本的Gradle。如果使用gradle wrapper的话,感觉这个配置会被忽略。Wrapper会自己去下载所使用的gradle版本。
其实jcenter 就是 Android library 文件服务器中的其中一个,另外一个就是 Maven Central,这两个都是Maven 仓库。 jcenter 由 bintray.com 维护 , Maven Central 则是由 sonatype.org 维护,它们分别存储在不同的服务器。
allprojects闭包
表示配置的是所有的工程;
并且通过dependencies指定项目的代码托管库,设置之后可以轻松在项目中引用jcenter中开源项目。
task clean
运行gradle clean时,执行此处定义的task。
该任务继承自Delete,删除根目录中的build目录。
相当于执行Delete.delete(rootProject.buildDir)。
AndroidStudio 3.0版本之后:
1
你会发现,指定的库闭包里面多了一个google(),表明AS可以直接从google()库中下载自己需要的内容了。
具体某个mudle中的build.gradle文件
apply plugin
表示使用插件,
'com.android.application'表示指定当前项目是一个应用。
该插件一般有两种值可选:一种为'com.android.application',表示该模块为应用程序模块,可以直接运行;另一种为'com.android.library',表示该模块为库模块,只能作为代码库依附于别的应用程序模块来运行。
android闭包
用于配置当前项目的属性。
compileSdkVersion:指定项目的编译版本,表示API的版本号如图表示是1~25
buildToolsVersion:指定项目的构建版本,如打包工具之类的
你可以用高版本的ToolsVersion去编译低版本的SdkVersion,反之不可以。
对这个项目进行细节上配置
defaultConfig:{
applicationId:应用的包名
minSdkVersion:项目最低兼容版本
targetSdkVersion:表示项目已经在当前版本上进行了充分测试,系统才会开启新的版本特性,
也就是说;若指定targetSdkVersion值为22,则表示该程序最高只在Android5.1版本上做过充
分测试,在Android6.0系统上(对应targetSdkVersion为23)拥有的新特性如系统运行时权限等功能就不会被启用
versionCode:版本号
versionName:版本名称
testIntrumentationRunner:为了进行单元化测试
}
生成安装文件的主要配置
buildTypes{
表示的是发布正式版本
release{
minifyEnabled:表示是否混淆
proguardFiles:表示指定混淆文件
}
}
dependencies闭包
指定本项目的依赖关系,分为三种形式的依赖,
compile fileTree:一个本地依赖声明,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径当中。
compile:远程依赖,AS会去jcenter()这种库源中去下载所需要的内容。
compile project(':honjane-demo-library') 库依赖
testCompile:声明测试用例库
androidTestCompile:测试用例库。
在3.0 版本上的变化
在dependencies中:
implement 和api代替了compile
其中,api 完全等于compile,没有区别
implement 指令有自己的好处:对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。