详解build.gradle文件

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是在<Android SDK>/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都是用于声明测试用例库的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容