You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Gradle依赖强制配置下,运行时lib_B与lib_C版本选择

Android Gradle依赖版本解析问题

背景信息

  • 涉及库/模块:com.group.one:lib_A、com.group.other:lib_B、com.group.other:lib_C
  • 版本绑定关系:lib_B 3.0.0 依赖 lib_C 3.0.0;lib_B 3.1.0 依赖 lib_C 3.1.0
  • lib_A:8.0.0 的依赖与配置:
    • 依赖 lib_B:3.1.0
    • 其Gradle配置仅强制com.group.one组的依赖使用3.1.0版本,代码如下:
      dependencies {
          implementation "com.group.other:lib_B:3.1.0"
          ... ...
      }
         
      configurations.all {
          resolutionStrategy.eachDependency { DependencyResolveDetails details ->
              def requested = details.requested
      
              // force all the flurry modules to same version
              if (requested.group == 'com.group.one') {
                  details.useVersion "3.1.0"
              }
          }
      }
      
  • 目标应用的依赖配置:
    dependencies {
        implementation "com.group.one:lib_A:8.0.0"
        implementation "com.group.other:lib_B:3.0.0"
    }
    

问题

该应用运行时,lib_B和lib_C会使用3.1.0还是3.0.0版本?

解答

首先要明确:lib_A里的Gradle强制规则只对com.group.one组的依赖生效,lib_B、lib_C属于com.group.other组,不受这个规则影响。

按照Gradle默认的依赖冲突处理逻辑,当同一个库被多个版本依赖时,会自动选择版本号更高的版本。

具体到这个场景:

  • lib_B版本:应用直接依赖lib_B:3.0.0,同时lib_A:8.0.0引入了lib_B:3.1.0,3.1.0是更高版本,因此最终使用lib_B:3.1.0。
  • lib_C版本:由于lib_B:3.1.0绑定依赖lib_C:3.1.0,且没有其他版本的lib_C被引入,所以最终使用lib_C:3.1.0。

内容的提问来源于stack exchange,提问作者lannyf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:50:24