当前位置:   article > 正文

深入浅出学习Gradle(之一)_gradle版本不一样影响运行吗

gradle版本不一样影响运行吗

帮朋友推广一下公众号,欢迎大家关注,谢谢!

公众号二维码.jpg

一、引言
1、Gradle的概念

Gradle是一个开源的、基于Groovy语言的项目自动化构建工具,旨在帮助开发人员更轻松、自动地完成项目的构建、测试、发布等繁琐流程。它集成了Apache Ant和Apache Maven的优点,提供了一种更为灵活、高效的构建系统。不仅在Java、Kotlin等JVM语言中被广泛应用,也成为了Android开发的官方构建工具。Gradle支持领域特定语言(DSL)及各种插件,使得开发者能够对项目进行高度定制化的构建。

2、为什么要学习使用Gradle

学习使用Gradle对于现代开发者是至关重要的,尤其对于Android开发人员来说更是不可或缺。Gradle帮助开发者快速创建和构建项目,自动处理依赖关系,简化了打包、发布等流程。熟练掌握Gradle将大大提高项目构建和绠发中的工作效率。此外,Gradle强大的插件生态也为开发者提供了丰富的选择,使项目按要求定制化的构建成为可能。总之,掌握Gradle,将有助于提高项目的规模化管理与维护能力,为开发者带来诸多便利。

3、Gradle在Android开发中的作用与重要性

自从Google将Gradle确定为Android官方构建工具以来,它在Android开发中扮演了举足轻重的角色。对于Android开发人员来说,理解和掌握Gradle的使用,意味着能够得心应手地配置、编译和打包项目,同时针对不同环境、渠道和需求制定灵活多变的构建方案。Gradle还使得多模块项目管理变得更容易,提高了Android项目的协同性。此外,借助Gradle可以方便地实现编译时优化,以进一步提高项目构建速度及代码质量。因此,作为一名Android开发人员,掌握Gradle的使用技巧对于项目的成功至关重要。

二、Gradle基础
1、Gradle简史与发展

Gradle诞生于2007年,是由Hans Dockter和Adam Murdoch共同设计并开发的。它的设计初衷是为了突破现有构建工具的局限,如Apache Ant的繁琐配置和Apache Maven的严格约定。经过多年的发展,Gradle已经从一款构建工具发展成为一个庞大的生态系统,拥有着丰富的插件资源。自2013年Google将Gradle选为Android官方构建工具后,Gradle的影响力更是得到了极大的提升。目前,它已经成为全球众多大型企业和开源项目的首选构建工具。

2、Gradle与其它构建工具的比较(如:Maven和Ant)

与Apache Ant相比,Gradle具备更强的功能和灵活性。Ant基于XML进行配置,这意味着开发人员需要编写大量冗长的代码来完成构建任务,这无疑大大影响了编码效率。而Gradle采用的是Groovy DSL,这让构建脚本更加简洁、易读。此外,Gradle提供了增量构建的功能,可以减少不必要的编译,从而提高构建速度。

与Apache Maven相比,Gradle拥有更加优越的性能和可扩展性。Maven基于约定优于配置的理念,对项目结构和构建过程进行了严格规范,这限制了一定程度上的灵活性。而Gradle则允许开发人员按照需求定制构建过程,满足不同类型项目的需求。同时,Gradle内置的依赖解决方案性能更优,且包含了丰富的插件生态系统,充满了无限的可能。

3、安装及配置Gradle环境

要安装和配置Gradle,首先需要下载Gradle的发行版。

官方网站提供了多个版本可供下载。

下载后,将Gradle解压到指定目录,并将该目录下的bin文件夹添加到系统环境变量PATH中。

完成配置后,可以在命令行中输入以下命令测试:

	gradle -v
  • 1

若输出Gradle的版本信息,则表示安装成功。在配置Gradle环境时,也需要确保Java JDK已安装,并设置好JAVA_HOME环境变量。

4、Gradle Wrapper的作用和使用方法

Gradle Wrapper是一款方便使用和分发的工具,它可以确保构建者在不安装Gradle的情况下使用指定版本进行构建。通过使用Gradle Wrapper,可以避免构建者因为使用不同版本的Gradle导致的构建失败。

在Android项目中,Gradle Wrapper由wrapper任务自动生成,包括gradlew(Unix)和gradlew.bat(Windows)可执行文件以及gradle-wrapper.properties配置文件。

要运行项目,我们只需使用以下命令:

./gradlew build  (Unix)
gradlew.bat build(Windows)
  • 1
  • 2

当执行Gradle Wrapper时,如果指定版本尚未安装,则会自动下载并缓存到本地,以便后续构建使用。这样一来,每个项目都可以确保使用一个一致的Gradle版本,从而大大提高了构建的稳定性和一致性。

三、Gradle构建文件与脚本
1、build.gradle的配置及作用

build.gradle文件用于配置项目的构建过程和依赖关系。

在Android项目中,通常会有两个build.gradle文件,一个位于项目的根目录,另一个位于app模块的目录

# 在Android项目的根目录执行这个命令,可以看到有两个build.gradle文件
find . -type f -name "build.gradle"
./app/build.gradle
./build.gradle
  • 1
  • 2
  • 3
  • 4

根目录下的build.gradle文件负责配置整个项目的通用属性和依赖,例如Gradle插件的版本和所有项目的依赖项。

而app模块下的build.gradle文件负责配置模块级别的属性和依赖,例如项目的编译版本、目标版本等。

一个简单的app模块的build.gradle示例如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 19
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
2、settings.gradle的配置及作用

settings.gradle文件主要用于管理项目中的子模块,定义多个模块之间的关系。

在大型项目中,将功能拆分为多个子模块可以提高项目的可维护性和可重用性。

settings.gradle文件位于项目根目录下,用于声明需要包含在构建中的所有模块。

例如:在一个包含app模块和一个名为library的库模块的项目中,settings.gradle文件可能如下所示:

include ':app', ':library'
  • 1
3、gradle.properties的配置及作用

gradle.properties文件用于设置Gradle构建的全局属性,它可以存储构建配置、密钥以及依赖库的版本信息等。

通过在此文件中配置属性,可以将配置集中管理,方便更新和维护。

在使用Gradle构建时,这些属性将自动应用于项目。

例如,在gradle.properties文件中设置构建参数和依赖库版本:

android.useAndroidX=true
android.enableJetifier=true
appVersionName=1.0
appVersionCode=1
libraryVersion=1.0.0
  • 1
  • 2
  • 3
  • 4
  • 5

然后,可以在build.gradle文件中引用它们:

defaultConfig {
    applicationId "com.example.myapp"
    minSdkVersion 19
    targetSdkVersion 30
    versionCode project.appVersionCode
    versionName project.appVersionName
}

dependencies {
    implementation "com.example:library:${libraryVersion}"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
4、自定义Gradle脚本编写及应用

Gradle允许创建自定义脚本,从而灵活调整构建过程。自定义脚本通常以.gradle后缀命名并放置在项目的根目录或子模块目录中。

例如,创建一个名为version.gradle的脚本,定义一个名为incrementVersionCode的任务用于自动更新版本代码:

task incrementVersionCode {
    doLast {
        def versionCode = project.versionCode.toInteger() + 1
        def versionName = project.versionName

        // 更新gradle.properties里的版本号
        def propertiesFile = file("gradle.properties")
        propertiesFile.write(propertiesFile.text.replaceFirst(project.versionCode.toString(), versionCode.toString()))

        // 输出更新后的版本信息
        println "Version updated: ${versionName} (${versionCode})"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

要在项目中应用此自定义脚本,只需在build.gradle文件中添加以下代码:

apply from: 'version.gradle'
  • 1

现在可以使用命令行或许Android Studio执行incrementVersionCode任务,以自动更新版本代码。

./gradlew incrementVersionCode
  • 1

通过编写自定义Gradle脚本,我们可以实现各种定制功能,改进构建过程和自动化任务。这在项目中具有很高的价值,可以使团队在构建和应用程序发布过程中避免错误并保持一致性。

四、总结:

在Gradle构建文件与脚本的应用中,从build.gradle、settings.gradle到gradle.properties等文件的理解与配置十分重要,它们为Android项目的构建提供了基本的配置支持。此外,通过自定义Gradle脚本,我们可以根据项目需求,高度定制化地管理构建过程,从而提高开发效率和项目质量。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号