Gradle那点事儿

13 篇文章 0 订阅

1. 什么是Gradle?什么是Gradle插件?

软件开发过程不仅仅是编写代码,还涉及到对项目的管理

比如:添加项目的依赖,打包,签名,发布等一系列操作。如果你每天都在做这些操作,那有没有想过这些操作可以像代码一样被描述出来,供我们复用以及自动运行。

没错,这就是Gradle替我们做的事!Gradle通过编写一个名为build.gradle的脚本文件对项目进行配置,再根据这个脚本对项目进行构建。

那么,如何来提供这个Gradle构建环境呢?这就需要通过安装Gradle插件来使系统能支持运行Gradle。

安装Android Studio后就已经帮我们安装了Gradle插件.但Gradle插件是独立于Android Studio运行的,所以它的更新也是与Android Studio分开的。

2. Gradle 中语法汇总

2.1

dependsOn 表示在自己之前先执行这个方法

3. Gradle 常见问题

1. Error while generating the main dex list

报错信息

com.android.build.api.transform.TransformException: Error while generating the main dex list

根据字面理解:项目重复导入了.jar包所致

排查Android Studio项目根目录下 cmd

gradle  assembleDebug  --stacktrace

这个时候,重复导入的文件会列出详情,针对性删除或解决冲突即可

2. gradle编译慢(jcenter文件下载慢等)
替换jcenter()为阿里的一个镜像,如下代码段

buildscript {
    repositories {
        google()
//        jcenter()
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}
allprojects {
    repositories {
           google()
//        jcenter()
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
    }
}

3. 大伙儿如果删除了本机的.gradle,重新开启Android Studio,sync会很久,很久

在这里插入图片描述

4. 要为您的项目添加依赖项,请在您的 build.gradle 文件的 dependencies 程序块中指定依赖项配置,例如 implementation

例如,以下这个应用模块的 build.gradle 文件包括三种不同类型的依赖项:

apply plugin: 'com.android.application'

android { ... }

dependencies {
    // Dependency on a local library module
    // 这段代码声明名为“mylibrary”的 Android 库模块的依赖项(该名称必须匹配使用 settings.gradle 文件中的 include: 定义的库名称)。 
    // 在构建您的应用时,构建系统会编译库模块,并将生成的编译内容打包到 APK中
    implementation project(":mylibrary")

    // Dependency on local binaries(本地二进制文件依赖项)
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // Dependency on a remote binary
    implementation 'com.example.android:app-magic:12.3'
    // 以上代码实际上是下列代码的缩写形式:
    implementation group: 'com.example.android', name: 'app-magic', version: '12.3'
}

5. 依赖项配置

dependencies代码块内,您可以使用几种不同依赖项配置中的一种(例如上文所示的 implementation)声明库依赖项。 每项依赖项配置都为 Gradle 提供有关如何使用依赖项的不同说明。 下表介绍您可以在 Android 项目中对依赖项使用的每种配置。 此表还将这些配置与自 Android Gradle Plugin 3.0.0 起弃用的配置进行比较

在这里插入图片描述
相信这个表格大家都很熟悉了

6. 排除传递依赖项

随着应用范围的扩大,其中可包含许多依赖项,包括直接依赖项和传递依赖项(应用的导入库所依赖的库)。 要排除不再需要的传递依赖项,您可以使用 exclude 关键字,如下所示:

dependencies {
    implementation('some-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

7. 远程代码库

如果您的依赖项并非本地库或文件树,Gradle 会在您的 build.gradle 文件 repositories 程序块中指定的任何一个在线代码库中寻找文件。 列出各代码库的顺序决定了 Gradle 在这些代码库中搜索各项目依赖项的顺序。 例如,如果代码库 A 和 B 都提供某依赖项,而您先列出代码库 A,则 Gradle 会从代码库 A 下载此依赖项。

默认情况下,Android Studio 新项目会在项目的顶级 build.gradle 文件中指定 Google 的 Maven 代码库和 JCenter 作为代码库位置,如下所示:

allprojects {
    repositories {
        google()
        jcenter()
    }
}

如果您需要的内容来自 Maven 中央代码库,则添加 mavenCentral();如果来自本地代码库,则使用 mavenLocal():

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        mavenLocal()
    }
}

6. 参考

  1. 快速查看Gradle项目类库依赖情况
  2. -bash :gradlew command not found
  3. Gradle 编译报错 - Error while generating the main dex list 这篇帮我解决了这个问题
  4. gradle 插件版本、gradle版本 和buildToolsVersion之间的对应关系
  5. Get started with build scans
  6. 快速查看Gradle项目类库依赖情况
  7. Android Studio 常见问题-Gradle
  8. Android Gradle和Gradle插件区别
  9. Gradle Gradle Tools版本匹配-官方
  10. Command-Line Interface
  11. Build Environment
  12. Minimum supported Gradle version is 5.1.1. Current version is 4.7
  13. 解决Minimum supported Gradle version is 3.3. Current version is 2.14.1问题
  14. com.gradle.build-scan
  15. Android和Maven仓库那些事
  16. 依赖项类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初心一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值