首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android Gradle 插件】Gradle 依赖管理 ⑦ ( dependencies 传递依赖设置 | transitive 关闭依赖传递配置 | exclude 排除依赖配置 )

文章目录 一、dependencies 依赖传递层级 二、transitive 关闭依赖传递配置 三、exclude 排除依赖配置 Android Plugin DSL Reference 参考文档.../build/dependencies 一、dependencies 依赖传递层级 ---- 在上一篇博客中 , 执行 gradlew :app:dependencies 命令 , 可以打印出依赖库以及依赖库的依赖库层级...增加一个闭包 , 使用逗号隔开 , 闭包中配置 transitive false 选项 , 即不解析该依赖的子依赖 ; 进行了上述设置后 , 调用 fresco 函数库肯定会出现问题 ; 三、exclude...排除依赖配置 ---- 设置 exclude 属性 , 可以排除依赖库的某个子依赖 , 并且在外部进行依赖 , 可以有效解决依赖库冲突问题 ; dependencies { implementation...:24.2.1 子依赖exclude(group:'com.android.support', module:'support-core-utils') } // 外部单独添加被排除的 com.android.support

81520

【Android Gradle 插件】Android 依赖管理 ⑥ ( 依赖冲突处理 | transitive 依赖传递设置 | exclude 依赖排除设置 | force 强制指定依赖库 )

文章目录 一、查询 Android 依赖库的配置 二、通过 ModuleDependency#transitive 依赖传递设置 三、通过 ModuleDependency#exclude 设置排除依赖库...四、通过 configuration 配置排除依赖库 五、force 强制指定依赖库 一、查询 Android 依赖库的配置 ---- 遇到 依赖冲突 , 如果要 排查某个依赖的子库 ,...---- dependencies 中配置依赖 , implementation 依赖配置 后 , 可以 闭包中 使用 transitive 函数 设置依赖是否传递 , 如果为 transitive...:appcompat 依赖库 , 则该设置无效 ; ModuleDependency#exclude 方法函数原型如下 : /** * 添加排除规则以排除依赖项的可传递依赖项。...* 确保从整个配置中排除传递依赖项 * 请使用每个配置的排除规则:{@link configuration#getExcludeRules()}。

2.7K31
您找到你想要的搜索结果了吗?
是的
没有找到

边学边用Gradle:依赖管理

我们称之为transitive dependencies(依赖传递) 。 发布 简言: 项目的主要目的是要建立一些文件,项目之外使用。...configurations.all { transitive = false } 局部排除模块 可能需要排除一些传递依赖中的某个模块,这时需要exclude....此外,exclude还可用于但不限于以下几种情况: 依赖冲突,如果有两个依赖引用了相同jar包的不同版本,默认情况下gradle会采用最新版本的jar包,此时可以通过排除选项来排除。...无法正常获取到此传递依赖,远程仓库都不存在的。 版权原因需要排除的。 其他原因。 可以通过configuration配置或者依赖声明时添加exclude的方式来排除指定的引用。...Gradle深入与实战(转) gradle在打包怎么排除另一个项目中所有引用的jar包 翻译:Gradle依赖管理 VIII. Spring Boot Maven插件

1.9K10

一文彻底搞清Gradle依赖

举个例子,A依赖B,B依赖C,如果都是使用api配置的话,A可以直接使用C中的类(编译和运行时),而如果是使用implementation配置的话,在编译,A是无法访问C中的类的。...compileOnly 与provided对应,Gradle依赖加到编译路径,编译使用,不会打包到输出(aar或apk)。这可以减少输出的体积,只在编译需要,在运行时可选的情况,很有用。...{ compile.exclude module: 'cglib' //全局排除原有的tnet jar包与so包分离的配置,统一使用aar包中的内容 all*.exclude...transitive = false } 还可以单个依赖项中使用@jar标识符忽略传递依赖: compile 'com.zhyea:ar4j:1.0@jar' 4.强制使用某个版本 如果某个依赖项是必需的...,而又存在依赖冲突,此时没必要逐个进行排除,可以使用force属性标识需要进行依赖统一。

4.6K20

Android高频面试专题 - 架构篇(一)AS项目架构

日常开发中AS与Gradle架构使用技巧的高频面试问题。...compile:我们最常用的依赖,编译提供并打包进apk provided:编译提供但不打包进apk gradlew 3.0 中complie过期了,用implementation和api替代,...api = compile implemention:将该依赖隐藏在内部,而不对外部公开 5、解决依赖冲突,排除依赖传递 exclude: 设置编译指定的模块,排除指定模块的依赖 transitive...设置为false排除所有的传递依赖 force:强制设置某个模块的版本 6、Gradle打包的混淆 通过buildTypes中配置minifyEnable来开启和关闭proguard 通过proguardFiles...打开项目根目录下的build.gradle, 最顶上依赖我们刚刚创建的配置文件apply from: "xxx.gradle" app模块下的build.gradle中引用即可:compile

1.3K10

Android -Gradle依赖导入及相关知识

:前者allproject是整个项目本身需要的依赖,后者是gradle脚本执行所需依赖Gradle插件),分别是对应的maven库和插件 task clear 运行gradle clean,执行此处定义的...,那么强制依赖这个版本的,默认false force = true //exclude可以设置编译指定的模块,有三种写法: exclude module: 'abc...' exclude group: 'bcd' exclude group: 'abc', module: 'bcd' //禁止依赖传递gradle自动添加子依赖项,默认为...project 的 build.gradle 中添加如下的代码,该代码的意思是:项目构建,遍历所有依赖,然后 com.android.support 包下的依赖替换同一个版本。...因此,推荐使用 exclude 关键字排除。 那我们如何判断是那几个library的文件冲突了呢? 首先studio会先报出该错误,log日志中会有某个moudle的信息。

97320

Gradle 进阶学习之 Dependencies 【依赖

应用场景 - 适用于多模块的项目,特别是当你想要避免重复依赖同一个模块。 - 大多数情况下使用,尤其是当你希望依赖传递给模块使用。...当然除此之外,Gradle 也为我们提供了一系列的解决依赖冲突的方法: exclude 移除一个依赖,不允许依赖传递,强制使用某个版本。...5.2 Exclude 排除某个依赖 5.3 不允许依赖传递【一般不用】 添加依赖,如果设置 transitive 为 false,表示关闭依赖传递。...5.4 强制使用某个版本【官方建议】 拓展 Gradle 中,如果你想要避免依赖冲突并确保构建的可预测性,你可以配置构建过程遇到依赖冲突立即失败。这可以帮助你快速发现并解决版本不一致的问题。...简化调试:立即失败可以简化调试过程,因为你不需要去猜测为什么构建成功但运行时却出现问题。 避免运行时错误:通过确保所有依赖都是兼容的,可以减少运行时由于依赖匹配导致的意外错误。

57820

这可能是解决 Could not resolve X 问题有效方式之一

(哎,指标不治本啊,有的 api 引用的高版本的啊) 将 gradle 设置为离线模式。(我就很是纳闷,依赖的事儿,咋和 gradle 相关呢) 还有重装 AS。。。...以下内容节选自 Google Developers,文末附上地址: 随着应用的范围不断扩大,它可能会包含许多依赖项,包括直接依赖项和传递依赖项(应用中导入的库所依赖的库)。...要排除不再需要的传递依赖项,您可以使用 exclude 关键字,如下所示: dependencies { implementation('some-library') { exclude...group: 'com.example.imgtools', module: 'native' } } 其中列举下个人理解: exclude:要排除依赖组,例如我只是排除使用 support...:26.+ 依赖; module:这个我没有实际使用,大体猜测为排除某个 module 下的指定依赖组。

7.5K20

Android Gradle依赖管理、去除重复依赖、忽略的方式

aar 和远程 jar包(因为他们没有打包到 aar 中) 4) 如果通过工程依赖(即compile project(‘:lib’)的方式), 依赖是可以传递的,所以不需要在声明一次依赖....)和exclude(直接排除匹配到的文件,建议使用) packagingOptions { pickFirst 'lib/arm64-v8a/libgnustl_shared.so'...项目开发中我们会经常引入多个Module,然而每个Module中又包含了V4、V7,为了升级新版本依赖包只用更改一次,我们决定采用Gradle依赖的统一管理,避免重复繁琐的劳动。...记录get到的新知识,用法如下: 1.Project目录下新建config.gradle文件,文件名可自定义 ?...的build.gradle中添加 apply from: “config.gradle” 3.modle的build.gradle中添加引用 apply plugin: 'com.android.application

10.2K31

Groovy高级用法

Project Api使用 命令使用 Android studio 命令行中输入./gradlew clean 进行工程的清理 输入./gradlew build 进行task任务的构建 输入....排除依赖       implementation 'androidx.constraintlayout:constraintlayout:1.1.3'{           exclude...transitive false//禁止传递依赖false 可以进行传递依赖true       }       testImplementation testDeps.junit       androidTestImplementation...testDeps.runner       androidTestImplementation testDeps.espresso   }   传递依赖 比如:工程A依赖于工程B,工程B依赖于工程C,...工程A传递依赖于工程C,不能进行传递依赖,是不确定的,可能B升级后就不需要依赖于C,那么A不会在C找到所需东西 Gradle 执行外部命令进行拷贝文件到磁盘下 /** * 文件拷贝到外部电脑文件夹下

88120

Gradle 之 Task 使用

Project Api使用 命令使用 Android studio 命令行中输入./gradlew clean 进行工程的清理 输入./gradlew build 进行task任务的构建 输入....排除依赖       implementation 'androidx.constraintlayout:constraintlayout:1.1.3'{           exclude...transitive false//禁止传递依赖false 可以进行传递依赖true       }       testImplementation testDeps.junit       androidTestImplementation...testDeps.runner       androidTestImplementation testDeps.espresso   }   传递依赖 比如:工程A依赖于工程B,工程B依赖于工程C,...工程A传递依赖于工程C,不能进行传递依赖,是不确定的,可能B升级后就不需要依赖于C,那么A不会在C找到所需东西 Gradle 执行外部命令进行拷贝文件到磁盘下 /** * 文件拷贝到外部电脑文件夹下

86910

Gradle之Project Api 使用

Project Api使用 命令使用 Android studio 命令行中输入./gradlew clean 进行工程的清理 输入./gradlew build 进行task任务的构建 输入....排除依赖       implementation 'androidx.constraintlayout:constraintlayout:1.1.3'{           exclude...transitive false//禁止传递依赖false 可以进行传递依赖true       }       testImplementation testDeps.junit       androidTestImplementation...testDeps.runner       androidTestImplementation testDeps.espresso   }   传递依赖 比如:工程A依赖于工程B,工程B依赖于工程C,...工程A传递依赖于工程C,不能进行传递依赖,是不确定的,可能B升级后就不需要依赖于C,那么A不会在C找到所需东西 Gradle 执行外部命令进行拷贝文件到磁盘下 /** * 文件拷贝到外部电脑文件夹下

1.1K20

Groovy 基本类型与闭包

Project Api使用 命令使用 Android studio 命令行中输入./gradlew clean 进行工程的清理 输入./gradlew build 进行task任务的构建 输入....排除依赖       implementation 'androidx.constraintlayout:constraintlayout:1.1.3'{           exclude...transitive false//禁止传递依赖false 可以进行传递依赖true       }       testImplementation testDeps.junit       androidTestImplementation...testDeps.runner       androidTestImplementation testDeps.espresso   }   传递依赖 比如:工程A依赖于工程B,工程B依赖于工程C,...工程A传递依赖于工程C,不能进行传递依赖,是不确定的,可能B升级后就不需要依赖于C,那么A不会在C找到所需东西 Gradle 执行外部命令进行拷贝文件到磁盘下 /** * 文件拷贝到外部电脑文件夹下

59520

Gradle 构建工具 #5 又冲突了!如何理解依赖冲突与版本决议?

一句话概括: 「动态版本是版本不稳定,变化版本是产物不稳定」 Dynamic 动态版本 动态版本是指版本号固定的声明方式,例如前面提到的区间版本、前缀版本和最新版本都属于动态化版本,最终依赖的版本号之后构建才能确定...这就是 Gradle依赖传递,很容易理解吧。 2.2 什么是依赖依赖冲突? 大型项目中,当工程中的依赖关系增多就很容易会遇到依赖冲突问题,想必各位在工作中也遇到过各种各样的依赖冲突问题。...一个误区: 需要避免混淆的是, Gradle使用 Maven 仓库,并不会左右 Gradle 的冲突解决策略,这里的 Maven 仓库仅用于提供依赖项,而依赖管理依然是 Gradle 的框架内运行的...虽然 Gradle 平台层提供了一套依赖解析决议机制,但 Gradle 版本决议的默认规则是选择的最高版本,最高版本不一定与项目兼容,所以开发者有时候要使用版本决议规则 API 来配置和干预 Gradle...排除规则 使用 exclude 可以根据 GAV 坐标排除间接依赖,也常用于解决前面提到的依赖实现冲突问题。

47230
领券