gradle 添加构建依赖项

2023-11-13

gradle 添加构建依赖项

参考:添加构建依赖项

利用 Android Studio 中的 Gradle 构建系统,您可以轻松地将外部二进制文件或其他库模块作为依赖项添加到您的 build 中。这些依赖项可位于您的计算机上或远程代码库中,并且它们声明的所有传递依赖项也会自动包含在内。本页介绍了如何在您的 Android 项目中使用依赖项,包括有关 Android Plugin for Gradle 特有的行为和配置的详细信息。如需更深入地了解 Gradle 依赖项的概念,您还应该参阅 Gradle 依赖项管理指南。但请注意,您的 Android 项目只能使用本页上定义的依赖项配置

注意:指定依赖项时,不应使用动态版本号,如 ‘com.android.tools.build:gradle:3.+’。使用此功能可能会导致意外的版本更新和难以解析版本差异。

###1. 依赖项类型

如需向您的项目添加依赖项,请在 build.gradle 文件的 dependencies 代码块中指定依赖项配置,如 implementation。

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

apply plugin: 'com.android.application'

android { ... }

dependencies {
    // Dependency on a local library module
翻译后: 依赖一个本地库模块
    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 project(’:mylibrary’)
这声明了对一个名为“mylibrary”(此名称必须与在您的 settings.gradle 文件中使用 include: 定义的库名称相符)的 Android 库模块的依赖关系。在构建您的应用时,构建系统会编译该库模块,并将生成的编译内容打包到 APK 中。

####本地二进制文件依赖项

implementation fileTree(dir: ‘libs’, include: [’*.jar’])
Gradle 声明了对项目的 module_name/libs/ 目录中 JAR 文件的依赖关系(因为 Gradle 会读取 build.gradle 文件的相对路径)。
或者,您也可以按如下方式指定各个文件:
implementation files(‘libs/foo.jar’, ‘libs/bar.jar’)

####远程二进制文件依赖项

implementation ‘com.example.android:app-magic:12.3’
这实际上是以下代码的简写形式:
implementation group: ‘com.example.android’, name: ‘app-magic’, version: ‘12.3’
这声明了对“com.example.android”命名空间组内的 12.3 版“app-magic”库的依赖关系。

注意:此类远程依赖项要求您声明适当的远程代码库,Gradle 应在其中查找相应的库。如果本地不存在相应的库,那么当 build 需要它时(例如,当您点击 Sync Project with Gradle Files 图标
 或运行 build 时),Gradle 会从远程站点提取它。

###原生依赖项

根据公开原生库的 AAR,原生依赖项将自动提供给 externalNativeBuild 所使用的构建系统。如要从代码访问这些库,您必须在原生构建脚本中链接到这些库。如需了解详情,请参阅使用原生依赖项

###2. 依赖项配置
在 dependencies 代码块内,您可以从多种不同的依赖项配置中选择其一(如上面所示的 implementation)来声明库依赖项。每种依赖项配置都向 Gradle 提供了有关如何使用该依赖项的不同说明。下表介绍了您可以对 Android 项目中的依赖项使用的各种配置。此表还将这些配置与自 Android Gradle 插件 3.0.0 起弃用的配置进行了比较。

新配置 已弃用配置 行为
implementation compile Gradle 会将依赖项添加到编译类路径,并将依赖项打包到构建输出。不过,当您的模块配置 implementation 依赖项时,会让 Gradle 了解您不希望该模块在编译时将该依赖项泄露给其他模块。也就是说,其他模块只有在运行时才能使用该依赖项。使用此依赖项配置代替 api 或 compile(已弃用)可以显著缩短构建时间,因为这样可以减少构建系统需要重新编译的模块数。例如,如果 implementation 依赖项更改了其 API,Gradle 只会重新编译该依赖项以及直接依赖于它的模块。大多数应用和测试模块都应使用此配置。
api compile Gradle 会将依赖项添加到编译类路径和构建输出。当一个模块包含 api 依赖项时,会让 Gradle 了解该模块要以传递方式将该依赖项导出到其他模块,以便这些模块在运行时和编译时都可以使用该依赖项。此配置的行为类似于 compile(现已弃用),但使用它时应格外小心,只能对您需要以传递方式导出到其他上游消费者的依赖项使用它。这是因为,如果 api 依赖项更改了其外部 API,Gradle 会在编译时重新编译所有有权访问该依赖项的模块。因此,拥有大量的 api 依赖项会显著增加构建时间。除非要将依赖项的 API 公开给单独的模块,否则库模块应改用 implementation 依赖项。
compileOnly provided Gradle 只会将依赖项添加到编译类路径(也就是说,不会将其添加到构建输出)。如果您创建 Android 模块时在编译期间需要相应依赖项,但它在运行时可有可无,此配置会很有用。如果您使用此配置,那么您的库模块必须包含一个运行时条件,用于检查是否提供了相应依赖项,然后适当地改变该模块的行为,以使该模块在未提供相应依赖项的情况下仍可正常运行。这样做不会添加不重要的瞬时依赖项,因而有助于减小最终 APK 的大小。此配置的行为类似于 provided(现已弃用)。

注意:您不能将 compileOnly 配置与 AAR 依赖项配合使用。

新配置 已弃用配置 行为
runtimeOnly apk Gradle 只会将依赖项添加到构建输出,以便在运行时使用。也就是说,不会将其添加到编译类路径。此配置的行为类似于 apk(现已弃用)。
annotationProcessor compile 如需添加对作为注释处理器的库的依赖关系,您必须使用 annotationProcessor 配置将其添加到注释处理器类路径。这是因为,使用此配置可以将编译类路径与注
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gradle 添加构建依赖项 的相关文章

随机推荐

  • [实习]Skywalking

    SkyWalking 1 是什么 skywalking是一个包含监控 追踪 并拥有故障诊断能力的分布式系统 它主要的作用是全链路监控 收集数据 分析处理数据 然后可视化呈现 这么说有点抽象 接下来画图来说 这是skywalking的架构 它
  • VscodeSSH免密远程登录服务器

    1 windows下cmd或git bash 或powershell等输入 ssh keygen 指令输入后一直回车 在C Users user name ssh路径下生成如下文件 2 linux服务器Terminal输入 ssh keyg
  • 【SVN命令】之 revert

    名称 子命令Svn revert 取消所有的本地编辑 概要 子命令Svn revert PATH 描述 Reverts any local changes to a file or directory and resolves any co
  • nodejs HelloWorld

    nodejs 服务器端 HelloWorld 程序 a hello js d02 hollo js var http require http http createServer function request response 请求对象
  • C++&Qt 各种数据类型转换

    1 uint64转QString QString strfilerename QString 1 arg nFileID nFileID为uint64类型 QString number nFileID 2 QString转超长数字串 QSt
  • 计算机图形学GAMES101(三)变换(模型、视图、投影)

    补充内容 R 是逆时针方向旋转的矩阵 R 是顺时针方向旋转的矩阵 可以发现R T R 1 像这样的矩阵叫做正交矩阵 以后如果要求往相反的方向旋转相同角度的变换 R 只需要求正向旋转的矩阵然后转置就可以了 本节涉及内容 仿射变换 线性变换 平
  • LeetCode-Python-389. 找不同

    给定两个字符串 s 和 t 它们只包含小写字母 字符串 t 由字符串 s 随机重排 然后在随机位置添加一个字母 请找出在 t 中被添加的字母 示例 输入 s abcd t abcde 输出 e 解释 e 是那个被添加的字母 第一种思路 转成
  • Java笔记:泛型、限定通配符与非限定通配符

    目录 1 泛型 2 限定通配符与非限定通配符 2 1 限定通配符 2 2 非限定通配符 3 PECS Producer Extends Consumer Super 原则 3 1 Producer Extends 3 2 Consumer
  • jar文件怎么打开 查看jar文件内容操作方法

    jar文件怎么打开 查看jar文件内容操作方法 jar文件是java项目生成的一个小的文件项目 也可以描述为一个java压缩包 里面封装了 许多java类以及方法 变量 很多用户想要查看jar文件内容 可是却不知道jar文件怎么打开 下面小
  • TorchServe环境构建+模型更新+新模型注册

    目录 1 背景 2 torchserve环境搭建 2 1jdk环境搭建 2 2 python 环境搭建 2 3 启动服务 2 3 1 注册模型 2 3 2 模型查看 2 3 3 接口调用 3 进阶功能 3 1 模型多版本管理 3 2 新模型
  • NLP神器Gensim库(一):入门操作

    Gensim是一款开源的第三方Python工具包 用于从原始的非结构化的文本中 无监督地学习到文本隐层的主题向量表达 它支持包括TF IDF LSA LDA 和word2vec在内的多种主题模型算法 支持流式训练 并提供了诸如相似度计算 信
  • 【值得收藏的种子搜索引擎】

    种子搜索引擎和磁力搜索引擎是用于搜索和下载种子文件和磁力链接的工具 本文将介绍五个值得收藏的子搜索引擎和磁力搜索引擎 并提供两个示例说明 BT Kitty BT Kitty是一个功能强大的子搜索引 可以搜索各种类型的种子文件和磁力链接 它的
  • nextjs开发 + vercel 部署 ssr ssg

    前言 最近想实践下ssr 就打算用nextjs 做一个人博客 vercel 部署 提供免费域名 来学习实践下ssr ssg nextjs 一个轻量级的react服务端渲染框架 vercel 由 Next js 的创建者制作 支持nextjs
  • FlinkCDC-自定义序列化器

    package com lcy app customer import com alibaba fastjson JSONObject import com alibaba ververica cdc debezium DebeziumDe
  • 【前端】React使用react-markdown+antd实现引入渲染markdown文件

    项目中遇见一个需求 要求直接在浏览器打开markdown文件进行预览 初次使用遇见一些坎坷 以下记录实现过程 将其封装成了一个组件 1 下载依赖 yarn add react markdown 其余样式插件 yarn add remark
  • centos7安装mysql5.7

    一 下载mysql5 7 1 下载地址 点击跳转 2 然后上传到服务器上面 解压命令 tar xvf mysql 5 7 36 1 el7 x86 64 rpm bundle tar 3 解压后得到以下的rpm包 4 依次安装所需要的rpm
  • 因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。

    依赖关系问题 仍未被配置dpkg 依赖关系问题使得 smbclient 的配置工作不能继续 smbclient 依赖于 samba common 2 3 5 8 dfsg 1ubuntu2 3 然而 软件包 samba common 尚未配
  • ubuntu 安装 多版本 cuda 11.4 11.8

    显卡 rtx3060 笔记本已经安装了 cuda 11 4 和 对应的cudnn 现在想要安装 cuda 11 8 和 cudnn 8 8 原理 新的 driver 可以 兼容 旧的 cuda sdk 旧的 driver 不能 兼容 新的c
  • matlab神经网络工具箱的使用

    单变量 单变量取数据 data load ex1data1 txt X data 1 y data 2 多变量取数据 data load ex1data2 txt X data 1 2 y data 3 运行train后弹出 对应的图 比如
  • gradle 添加构建依赖项

    gradle 添加构建依赖项 参考 添加构建依赖项 利用 Android Studio 中的 Gradle 构建系统 您可以轻松地将外部二进制文件或其他库模块作为依赖项添加到您的 build 中 这些依赖项可位于您的计算机上或远程代码库中