当前位置: 首页 > article >正文

android的gradle

Gradle User Manual    gradle官网

这里有个gradlew很有用,因为这个可以在窗口中运行gradlew脚本 

gradlewgradlew.bat 都是 Gradle Wrapper(Gradle 包装器) 的一部分,它们的作用是让项目可以使用 Gradle 而无需提前在系统中安装 Gradle。两者的主要区别在于 操作系统环境文件格式,如下所示:

什么是Gradle Wrapper?

Gradle Wrapper Basics.   官网地址

Gradle Wrapper 的主要功能
  1. 统一 Gradle 版本

    • Gradle Wrapper 可以确保所有开发者使用项目指定的 Gradle 版本,避免版本不一致导致的问题。
    • Wrapper 会根据 gradle/wrapper/gradle-wrapper.properties 中配置的版本自动下载所需的 Gradle。
  2. 自动下载 Gradle

    • 如果本地没有所需的 Gradle 版本,Wrapper 会自动从官方仓库下载指定版本的 Gradle。
    • 下载的 Gradle 存储在本地缓存目录(默认在 ~/.gradle/wrapper/dists)。
  3. 无需手动安装 Gradle

    • 开发者无需手动安装 Gradle,只需运行项目中的 Wrapper 脚本即可。
  4. 跨平台支持

    • gradlewgradlew.bat 分别支持类 Unix 和 Windows 系统,让项目可以在不同操作系统中无缝构建。

环境依赖

  • gradlew 依赖于系统的 Shell 环境(如 Bash)。
  • gradlew.bat 依赖于 Windows 的批处理执行环境(如 CMD)。

如我在mac环境中执行:

  ./gradlew -v  ---查看当前的gradle版本信息

这里请注意:在这里使用的gradle是我们项目的wrap中配置的gradle

gradle是由一系列构建任务组成的

我们查看下gradle一共有提供多少任务:

在窗口中输入:./gradlew -v ,可以看到有很多任务

Android tasks
-------------
androidDependencies - Displays the Android dependencies of the project.
signingReport - Displays the signing info for the base and test modules
sourceSets - Prints out all the source sets defined in this project.

Build tasks
-----------
assemble - Assemble main outputs for all the variants.
assembleAndroidTest - Assembles all the Test applications.
assembleUnitTest - Assembles all the unit test applications.
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that depend on it.
buildKotlinToolingMetadata - Build metadata json file containing information about the used Kotlin tooling
buildNeeded - Assembles and tests this project and all projects it depends on.
bundle - Assemble bundles for all the variants.
clean - Deletes the build directory.
compileDebugAndroidTestSources
compileDebugSources
compileDebugUnitTestSources
compilePreSources
compilePreUnitTestSources
compileReleaseSources
compileReleaseUnitTestSources
debugSourcesJar - Assembles a jar archive containing the sources of target 'debug'.
extractDebugAnnotations - Extracts Android annotations for the debug variant into the archive file
extractReleaseAnnotations - Extracts Android annotations for the release variant into the archive file
releaseSourcesJar - Assembles a jar archive containing the sources of target 'release'.

比如:

 ./gradlew clean
清楚app的build下的缓存

如果嫌弃敲命令可以点击图形化的

gradle的一个配置流程

最开始读取setting.gradle,就知道一共有多少模块了

build.gradel是每个模块的构建脚本,可以读取这个模块依赖了哪些插件,支持哪些任务等,最为核心的东西

讲解几个方法,其实gradle中写的全是方法,比如:plugins

点击plugins,发现就是一个fun,因为kotlin中如果最后一个参数是方法的话,lamd表达式可以放在()后面,因为只有一个参数,所以()可以省略

    public final fun plugins(block: org.gradle.kotlin.dsl.PluginDependenciesSpecScope.() -> kotlin.Unit): kotlin.Unit { /* compiled code */ }

那alias函数呢?其实是PluginDependenciesSpecScope类中的,因为你传入的函数,给你弄成了

PluginDependenciesSpecScope的扩展函数he

gradle虽然是用java写的,运行在虚拟机上,但是他不支持用 java写脚本,只是支持kotin和goovy,因为java太繁琐了

这种都是gradle的脚本

 

 编写设置文件_哔哩哔哩_bilibili

 

pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "My Application"
include(":app")
include(":suAssert")
include(":mylibrary")

这些方法其实都是settings对象对象提供的
eg:
settings.include(":mylibrary")
只是为了方便,把settings去掉了

setting.gradle中也可以配置插件,但是这里配置了的都是全局的,一般都在module中配置

记得是一行一行往下执行

pluginManagement {       //这个是指定插件的仓库地址
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {     //这是第三方依赖库的仓库地址
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}


http://www.kler.cn/a/520247.html

相关文章:

  • Node.js下载安装及环境配置
  • Python Flask教程
  • SAP新增公司间交易的配置点---SD部分内容
  • Flutter中PlatformView在鸿蒙中的使用
  • 使用python-docx包进行多文件word文字、字符批量替换
  • 使用 Docker 运行 Oracle Database 23ai Free 容器镜像并配置密码与数据持久化
  • fiscoBcos中使用工具脚本在本地搭建一条4节点链
  • 周末总结(2024/01/25)
  • C#常考随笔3:对象比较obj1.Equals(obj2)== true时候,hashcode是否相同?
  • Java的循环结构
  • 【数据结构】_链表经典算法OJ:合并两个有序数组
  • 随笔十七、eth0单网卡绑定双ip的问题
  • 题解 洛谷 Luogu P1113 杂务 图论 BFS C++
  • 计算机网络之链路层
  • CommonAPI学习笔记-1
  • 【Oracle篇】使用Hint对优化器的执行计划进行干预(含单表、多表、查询块、声明四大类Hint干预)
  • 牛客训练营(一)补题
  • 【2025AI发展预测】2.2025的风口与发展,我们如何主动拥抱这一浪潮
  • 可见光通信代码仿真
  • 狗狗能吃萝卜吗?
  • vim可视化模式的进阶操作
  • C# 类(Class)
  • SOME/IP--协议英文原文讲解1
  • 深度解析:基于Vue 3的教育管理系统架构设计与优化实践
  • 【论文阅读笔记】“万字”关于深度学习的图像和视频阴影检测、去除和生成的综述笔记 | 2024.9.3
  • 【趋势】《2024—2026金融科技十大趋势预测》一览