详解build.gradle文件

前言

一般来说一个新创建的项目中,有两个 build.gradle 文件,一个是工程目录下的,一个是 app 目录下的,这两个 build.gradle 文件对 Android Studio 项目的作用是非常重要的,接下来我们就新建一个项目来进行详细的分析,这里大家可以随便自己新建一个项目。
在这里插入图片描述

1、外层目录下的build.gradle文件

在这里插入图片描述
google()和jcenter():两处repositories的闭包中都声明了这两行配置,google仓库中包含的主要是Google自家的扩展依赖库,而jcenter仓库中包含大多是一些第三方的开源库。

Gradle插件和Kotlin插件:dependencies闭包中使用classpath声明的两个插件,因为Gradle并不是专门为构建Android项目而开发的,Java、C++等很多种项目也可以使用Gradle来构建,因此如果我们要使用它来构建Android项目,则需要生命com.android.tools.build:gradle:3.5.2这个插件,最后面的部分是版本号,通常和Android Studio的版本是相对应的。

2、app目录下的build.gradle文件

在这里插入图片描述
1、com.android.application:表示这是一个应用程序,com.android.library表示这是一个库模块。二者的区别:应用程序模块可以直接运行,库模块只能作为代码库依赖于别的应用程序模块来运行;

2、kotlin-android:如果想要试用Kotlin来开发Android项目,必须应用该插件;

3、kotlin-android-extensions:实现了一些实用的Kotlin扩展功能;
4、android闭包:在闭包中可以配置项目构建的各种属性;

4.1、compileSdkVersion:用于指定项目的编译版本,指定成29表示使用Android10.0系统的SDK编译;

4.2、buildToolsVersion:用于指定项目构建工具的版本,目前最新的版本就是29.0.2,如果有更新的版本时,Android Studio会进行提示;

4.3、defaultConfig闭包:可以对项目的更多细节进行配置;

4.3.1、applicationId:每一个应用的唯一标志符,不能重复,默认会使用项目创建时使用的包名,可以修改;

4.3.2、minSdkVersion:指定项目最低兼容的Android系统版本,21表示最低兼容Android5.0;

4.3.3、targetSdkVersion:表示项目在该版本上已经做过充分的测试,系统将会为应用程序启用一些对应系统版本的最新的功能和特性;

4.3.4、versionCode:用于指定项目的版本号;

4.3.5、versionName:用于指定项目的版本名称;

4.3.6、testInstrumentationRunner:在当前项目中启用JUnit测试,可以为当前项目编写测试用例,以保证功能的正确性和稳定性;

4.4、buildType闭包:用于指定生成安装文件的相关配置,通常只会有两个子闭包,一个release,一个debug;

4.4.1、debug闭包:用于指定生成测试版安装文件的配置,可以忽略不写;

4.4.2、release闭包:用于指定生成正式版安装文件的配置;

4.4.2.1、minifyEnabled:指定是否对项目的代码进行混淆;

4.4.2.2、proguardFiles:指定混淆时使用的规则文件,这里指定的两个文件:

第一个proguard-android-optimize.txt是在/tools/proguard目录下,里面是所有项目通用的混淆规则;

第二个proguard-rules.pro是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则(通过Android Studio直接运行项目生成的都是测试版安装文件);
5dependencies闭包指定当前项目所有的依赖关系:

Android Studio项目中一共有三种依赖方式

本地依赖:可以对本地的jar包或目录添加依赖关系,闭包中第一行implementation fileTree就是一个本地以来声明,表示将libs目录下所有的.jar后缀的文件都添加到项目的构建路径中;

库依赖:可以对项目中的模块添加依赖关系,基本格式是implementation project后面加上(‘:要依赖的库的名称’);

远程依赖:可以对jcenter仓库上的开源项目添加依赖关系,implementation是远程依赖声明,androidx.appcompat:appcompat:1.1.0就是一个标准的远程依赖库格式,其中androidx.appcompat是域名部分,用于和其他公司的库做区分,appcompat是工程名部分,用于和同一个公司的不同库做区分,1.1.0是版本号,用于和同一个库的不同版本区分,Gradle在构建项目时首先检查本地是否有该库的缓存,没有的话会自动联网下载,然后再添加到项目的构建路径中;

testImplementation和androidTestImplementation都是用于声明测试用例库的。

来源-作者:简书-陈饥饿
链接:https://www.jianshu.com/p/0e65f51e2ce7
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

怀着学习的态度给弄过来了

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>