【问题标题】:How to make two different modules in Android Studio use different versions of the same library via Gradle如何通过 Gradle 使 Android Studio 中的两个不同模块使用同一库的不同版本
【发布时间】:2024-04-24 03:05:01
【问题描述】:

我的 Android 应用中有两个模块:applibraryapp 依赖于 library

library我想用AndroidAnnotations 4.0.0

app 我现在想使用AndroidAnnotations 3.2.2,因为将其升级到 4.0.0 需要进行大量更改,因为他们已经更改了很多,而我没有时间这样做现在。

但是,自从我将library 升级为使用AndroidAnnotations 4.0.0 之后,AndroidAnnotationsapp 中的使用行为就像是版本4,而不是版本3,这让我觉得Gradle 真的很聪明并且被忽略了app 的版本 3,并且两个模块都使用版本 4。

如何在 gradle 中强制使用两个不同版本的依赖项?

【问题讨论】:

  • 你不能有两个不同的版本,因为会有命名空间冲突。唯一可能的方法是自己重新打包其中一个版本并更改类的包名称,以免它们发生冲突。

标签: android gradle


【解决方案1】:

使用force 命令强制使用依赖版本而不是另一个版本

build.gradle(app):

dependencies {
    compile ('com.squareup.okhttp:okhttp:2.4.0') {
        force = true
    }
    ...
}

build.gradle(图书馆):

    dependencies {
    compile 'com.squareup.okhttp:okhttp:2.3.0'
    ...
}

如果链接失效,以下是文档摘录:

允许强制某些版本的依赖项,包括传递 依赖关系。添加新的强制模块以在何时考虑 解决依赖关系。

它接受以下符号:

String in a format of: 'group:name:version', for example: 'org.gradle:gradle-core:1.0'
instance of ModuleVersionSelector
any collection or array of above will be automatically flattened

【讨论】:

    最近更新 更多