【Android Gradle 插件】更新依赖方式,同时解决github三方库引用无法使用问题

news2024/10/6 1:42:19

首先看一下完整的 settings.gradle 依赖介绍

/*
pluginManagement 脚本块,用于配置Gradle插件的Maven仓库,配置的是构建过程中,使用的仓库 ;
pluginManagement 脚本块中的 repositories 配置 , 对应之前的 buildscript 中的 repositories 配置 ;
*/
pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
/*
dependencyResolutionManagement 脚本块,用于配置依赖的Maven仓库 ,配置的是工程或模块下的依赖使用的仓库 ;
在 dependencyResolutionManagement 脚本块中定义

repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 代码的含义是 解析依赖时 , 只能使用本脚本块中的 Maven 仓库 , 不能使用 Module 子项目中的依赖 ;
repositoriesMode 模式有两种 :
RepositoriesMode.PREFER_PROJECT : 解析依赖库时 , 优先使用本地仓库 , 本地仓库没有该依赖 , 则使用远程仓库 ;
RepositoriesMode.FAIL_ON_PROJECT_REPOS : 解析依赖库时 , 强行使用远程仓库 , 不管本地仓库有没有该依赖库 ;

dependencyResolutionManagement 脚本块中的 repositories 配置 , 对应之前的 allprojects 中的 repositories 配置 ;
*/
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "My Application"
include ':app'

目录

首先看一下完整的 settings.gradle 依赖介绍

1、Maven 远程仓库配置

2、目录配置

3、完整代码示例

二、根目录下 build.gradle 构建脚本分析


1、Maven 远程仓库配置

pluginManagement 脚本块 ,

  • 用于 配置 Gradle 插件的 Maven 仓库 ,
  • 配置的是 构建过程 中 , 使用的仓库 ;

dependencyResolutionManagement 脚本块 ,

  • 用于 配置 依赖 的 Maven 仓库 ,
  • 配置的是 工程 或 模块 下的依赖使用的仓库 ;

在 dependencyResolutionManagement 脚本块 中 定义的 repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 代码的含义是 解析依赖时 , 只能使用本脚本块中的 Maven 仓库 , 不能使用 Module 子项目中的依赖 ;

repositoriesMode 模式有两种 :

  • RepositoriesMode.PREFER_PROJECT : 解析依赖库时 , 优先使用本地仓库 , 本地仓库没有该依赖 , 则使用远程仓库 ;
  • RepositoriesMode.FAIL_ON_PROJECT_REPOS : 解析依赖库时 , 强行使用远程仓库 , 不管本地仓库有没有该依赖库 ;

参考之前的 【Android Gradle 插件】Android 依赖管理 ② ( 为工程配置依赖仓库 | 为工程构建添加依赖仓库 | classpath 引入依赖库 | 配置依赖仓库 ) 博客中的配置 ,

  • pluginManagement 脚本块中的 repositories 配置 , 对应之前的 buildscript 中的 repositories 配置 ;
  • dependencyResolutionManagement 脚本块中的 repositories 配置 , 对应之前的 allprojects 中的 repositories 配置 ;

2、目录配置

settings.gradle 构建脚本中的目录设置 :

  • rootProject.name 用于指定工程根目录 , 在该目录下有一个 build.gradle 构建脚本 , 声明后会自动执行该构建脚本 ;
	rootProject.name = "LiveDataDemo"
  • include 用于指定子项目 , 在子项目中也有一个 build.gradle 构建脚本 , 声明后会自动执行该构建脚本 ;
	include ':app'

3、完整代码示例

完整代码示例 :

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "LiveDataDemo"
include ':app'

二、根目录下 build.gradle 构建脚本分析


根目录下 build.gradle 构建脚本如下 :

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id 'com.android.application' version '7.3.1' apply false
    id 'com.android.library' version '7.3.1' apply false
    id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
}

在 plugins 中使用

id 'com.android.application' version '7.3.1' apply false

配置 Gradle 插件 , 下面分析每个配置的含义 :

  • 引入 com.android.application 插件 ,
  • version '7.3.1' 说明引入插件的版本号 ,
  • apply false 表示当前不会马上引用该插件 , 在 Module 子项目 中使用到该插件时 , 才能正式应用 ;

在此处 主要是为了说明 Gradle 插件的版本 , 没有其它含义 ;

如 : 在 Module 子项目中 , 有如下配置 :

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

则会立刻应用 com.android.applicationorg.jetbrains.kotlin.android Gradle 插件 , 此处就不会有插件版本了 ;

在之前的 build.gradle 配置 中 , 在 " buildscript / dependencies / classpath " 中 , 配置 Android Gradle 插件版本 是 4.2.1 , 也就是

  • com.android.application
  • com.android.library

插件 的 版本 ;

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.1'
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/589353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

技术分享 | 一文了解 MySQL Optimizer Trace 的神奇功效

作者:Mutlis CSDN & 阿里云 & 知乎 等平台优质作者,擅长Oracle & MySQL等主流数据库系统的维护和管理等 本文来源:原创投稿 前言 对于 MySQL 5.6 以及之前的版本来说,查询优化器就像是一个黑盒子一样,…

迪赛智慧数——柱状图(基本柱状图):购买雪糕考虑的因素

效果图 冰淇淋季节来袭,因其细腻凉爽的口感和浓郁的口味被广大消费者所钟爱,近年来已经从一款传统的解暑冷冻饮品转变为一种原料丰富、口味多元、追求健康、愉悦和高品质生活方式的休闲食品。据数据显示,82.2%女性、82.3%男性消费…

chatgpt赋能python:Python中乘方的介绍

Python中乘方的介绍 在Python中,乘方运算指数运算,常用符号为“”(例如2的3次方为23)。使用乘方运算可以快速地进行数值计算,尤其是在科学和工程领域中。 为什么要使用乘方运算? 乘方运算主要用于处理大…

NeRF算法

Instant-ngp Instant-ngp简单介绍 Instant-ngp论文链接 英伟达实现的github链接 taichi实现Instant-ngp taichi实现的github链接 渲染 采用体素渲染方法,从相机光线出发,逐步采样3D场景中的三维坐标点的颜色,即可渲染出3D画面。如果直接将3…

进阶神册,Redis+Nginx+设计模式+Spring全家桶+Dubbo核心技术笔记

最近花了很长的时间去搜罗Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方…

vue3组件通信详解

vue3组件通信方式有以下几种:porps,$emit, bus,v-model,useAttrs,$ref/$parent,provide/inject,pinia,slot。下面将逐一讲解。 目录 1.porps:实现父子组件通…

V7.0_增加消息队列功能

一,功能描述 增加消息队列;使用自定义copy功能时,子进程copy结束后向父进程发送消息(通过消息队列)然后exit;此时因wait()而处于阻塞态的父进程终于解除了阻塞并且从队列中读取到消…

【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录 Kubernetes简介1 kubernetes架构1.1m…

清凉一夏小风扇-React版

这里写目录标题 前言 一、效果二、代码分享三、总结 前言 本片文章主要是做一个小练习,通过react来制作一个风扇练习css动画。 vue3实现部分看这里–> 一、效果 二、代码分享 1、主体框架 “react”: “^18.2.0” “sass”: “^1.62.1” 2、主要技术点 使用事…

企业上云容灾如何实现碳中和?

随着能源成本的增加和数据消费的激增,“电耗”和“碳排放”成为今年世界移动通信大会热议的话题。目前,ICT行业耗电量约占全球用电量的7%。预计到2040年,ICT行业碳排放量占全球排放量的比例将上升至14%。 容灾是企业为了在灾难时保证业务继续…

基于html+css的图展示99

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Log4j2 - JNDI 注入漏洞复现(CVE-2021-44228)

文章目录 Apache Log4j简介漏洞介绍影响版本漏洞编号影响组件应用 环境准备靶场搭建漏洞利用利用工具使用方式 反弹shell操作 漏洞修复建议 Apache Log4j简介 Apache log4j 是 Apache 的一个开源项目, Apache log4j2 是一个 Java 的日志记录工具。该工具重写了 log4…

03.hadoop上课笔记之hdfs环境的搭建和使用

1.启动网络 在windows任务管理器启动服务vm Dhcp #由动态ip变为静态 #启动网卡ifup ens33#修改网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33BOOTSTRAPstaticIPADDR192.168.202.101NETMASK255.255.255.0GATEWAY192.168.202.2DNS1192.168.202.2#重启网络 servic…

Vue动态路由在实际项目中的应用(包含前后台细节)

背景 近期做一个公司的门户网站,在产品和新闻这一块需要用到动态路由。本节博客以产品板块为例说一下动态路由的应用。 另外如果路由相关的基础知识有问题,可以查看我的这篇博客: Vue2路由的详细讲解 另外,这篇博客也会涉及到一…

macOS visual studio code 没有读写权限 检查更新报错

问题描述 visual studio code 检查更新,报错,visual studio code没有磁盘读写权限。(可能会导致插件安装报错?) 报错:The application is on a read-only volume. Please move the application and try a…

网络安全人员需要考的几本(含金量高)的证书!

网络安全行业含金量最高的当属CISSP——注册信息系统安全专家。但这个认证也是大家公认比较难考的证书. 含金量次之的CISP——国家注册信息安全专业人员,包含CISE(工程师)、CISO(管理)、CISA(外审&#xf…

面试前15天刷完这个笔记,拿下字节测开岗offer....

面试,跳槽,每天都在发生,跳槽,更是很常见的,对于每个人来说,跳槽的意义也各不相同,可能是一个人更向往一个更大的平台,更好的地方,可以通过换一个环境改变自己的现状。而…

基于OpenCV [c++]——形态学操作(分析和应用)

摘要: 形态学一般指生物学中研究动物和植物结构的一个分支。用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具。 基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。 形…

这篇文章把MOS管的基础知识讲透了

MOS管(Metal-Oxide-Semiconductor field-effect transistor)是一种常见的半导体器件,它在数字电路、模拟电路、功率电子等领域都有广泛的应用。本文将从MOS管的基本结构、工作原理、参数特性等方面讲解MOS管的基础知识。 一、MOS管的基本结构…

MediaPlayer error(-38, 0) 异常处理

文章目录 1、参考资料2、业务背景3、解决方案 1、参考资料 Media Player called in state 0, error (-38,0) MediaPlayer的使用 2、业务背景 对时长超过 5s 的音频提供裁剪、试听功能,裁剪、试听最大时长均为 5s。当视频长度在 5s ~ 6s 之间,试听暂停…