详解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表示这是一个库模块。二者的区别:应用程序模块可以直接运行,库模块只能作为代码库依赖于别的应用程序模块来运行;
kotlin-android:如果想要试用Kotlin来开发Android项目,必须应用该插件;
kotlin-android-extensions:实现了一些实用的Kotlin扩展功能;
4、android闭包:在闭包中可以配置项目构建的各种属性;
1、compileSdkVersion:用于指定项目的编译版本,指定成29表示使用Android10.0系统的SDK编译;
2、buildToolsVersion:用于指定项目构建工具的版本,目前最新的版本就是29.0.2,如果有更新的版本时,Android Studio会进行提示;
3、defaultConfig闭包:可以对项目的更多细节进行配置;
3.1、applicationId:每一个应用的唯一标志符,不能重复,默认会使用项目创建时使用的包名,可以修改;
3.2、minSdkVersion:指定项目最低兼容的Android系统版本,21表示最低兼容Android5.0;
3.3、targetSdkVersion:表示项目在该版本上已经做过充分的测试,系统将会为应用程序启用一些对应系统版本的最新的功能和特性;
3.4、versionCode:用于指定项目的版本号;
3.5、versionName:用于指定项目的版本名称;
3.6、testInstrumentationRunner:在当前项目中启用JUnit测试,可以为当前项目编写测试用例,以保证功能的正确性和稳定性;
4、buildType闭包:用于指定生成安装文件的相关配置,通常只会有两个子闭包,一个release,一个debug;
4.1、debug闭包:用于指定生成测试版安装文件的配置,可以忽略不写;
4.2、release闭包:用于指定生成正式版安装文件的配置;
4.2.1、minifyEnabled:指定是否对项目的代码进行混淆;
4.2.2、proguardFiles:指定混淆时使用的规则文件,这里指定的两个文件:
第一个proguard-android-optimize.txt是在/tools/proguard目录下,里面是所有项目通用的混淆规则;
第二个proguard-rules.pro是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则(通过Android Studio直接运行项目生成的都是测试版安装文件);
5、dependencies闭包:指定当前项目所有的依赖关系:
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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
怀着学习的态度给弄过来了
来源地址:https://blog.csdn.net/qq_45785397/article/details/127801771
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341