赞
踩
这节主要讲根节点的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博客
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。