Android Gradle(三)根节点的build.gradle详解

这节主要讲根节点的build.gradle,因为module的build.gradle主要涉及到Android Gradle Plugin。
上项目代码(经过一些简化)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.3.72'
    repositories {
        //阿里云的镜像库
        maven {url "http://maven.aliyun.com/nexus/content/groups/public/"}
    }
    dependencies {
		//继 AGP 4.2 之后的版本为版本 7.0,并且会要求升级到 Gradle 7.x 版。AGP 的每个主要版本都会要求在底层 Gradle 工具中进行主要版本升级。
        classpath 'com.android.tools.build:gradle:4.0.1'
    }
}

allprojects {
    repositories {
        //阿里云的镜像库
        maven {url "http://maven.aliyun.com/nexus/content/groups/public/"}
    }
    configurations.all {
        resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ext {
    version = [
            versionName = "7.5.1",
            versionCode =  versionCode()
    ]
    minSdkVersion = 19
    targetSdkVersion = 29
    compileSdkVersion = 29

}

def versionCode() {

    def versionName = rootProject.ext.versionName
    println(versionName)

    String[] split = versionName.split("\\.")
    List<String> versions = split.toList()
    if (split.length < 3) {
        for (i in split.length..2) {
            versions.add("0")
        }
    }
    StringBuilder builder = new StringBuilder()
    for (s in versions) {
        builder.append(String.format("%02d", Integer.parseInt(s)))
    }

    def versionCode = Integer.parseInt(builder.toString())
    println(versionCode)

    return versionCode
}

可以看到上面主要分为五个节点(以闭包来统计)。


1.buildscript


构建的脚本,主要负责工程一些插件的导入,例如AGP,kotlin或者一些第三方插件。
1.1 repositories
仓库地址,主要有三种仓库
1.ivy 2.maven 3.jcenter (官方已经准备停止)
主要就是提供脚本下载第三方资源的地址。
1.2 dependencies
配置一些项目的需要的第三方资源
1.3 classpath 和 implementation 区别?
classpath:下载第三方资源,用于帮助构建项目
implementation:下载第三方资源,用于项目代码的使用。
区别:implemetation下载的资源会被打包进apk里.

2.allprojects

所有module的配置,例如repositories ,为所有的module提供下载地址。
2.1 上面的repositories和这里的repositories区别?
上面的repositories 主要是为我们下载构建项目提供仓库
而这里的repositories 主要是为项目提供仓库
上面的repositories 属于ScriptHandler类(通过点击节点查看)
这里的repositories 属于Project类

3.task clean

清理项目build缓存任务

4.ext

扩展属性,用于其他模块直接使用,类似于 val ,区别是ext可以闭包操作。例如
ext{
minSdkVersion = 19
targetSdkVersion = 29
}
其他模块使用,例如 app的build.gradle:
minSdkVersion rootProject.ext.minSdkVersion
也可以
minSdkVersion rootProject.minSdkVersion
tip:每个节点都有ext属性,例如 android{}
android.ext{

}

5.versionCode

自定义方法,build.gradle 一般使用Groovy语言,也支持java kotlin语言。

1.Android Gradle - Gradle 生命周期_wumeixinjiazu的博客-CSDN博客

2.Android Gradle - Gradle 和 AGP区别_wumeixinjiazu的博客-CSDN博客

3.Android Gradle - 根节点的build.gradle_wumeixinjiazu的博客-CSDN博客

4.Android Gradle - AGP使用_wumeixinjiazu的博客-CSDN博客

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值