gpt4 book ai didi

java - Android Gradle ResolutionStrategy force 仍然会下载以前版本的 lib

转载 作者:行者123 更新时间:2023-12-03 05:41:36 34 4
gpt4 key购买 nike

我已强制在我的 gradle 中下载此版本的 jsr305,如下所示:

resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'

我看到当我尝试编译 gradle 时正在解析版本:
gradle resolution for module 1

gradle resolution for module 2

尽管如此,我看到在 gradle 同步期间,旧版本(2.0.1 和 1.3.9)仍在下载:

enter image description here

我收到如下编译错误: com.android.build.api.transform.TransformException:
Error while generating the main dex list.
com.android.tools.r8.errors.CompilationError: Program type already present: javax.annotation.CheckForNull
Program type already present: javax.annotation.CheckForNull
我做了一个模块级别的搜索,发现 CheckForNull.java存在于多个地方 jsr305/2.0.1
jsr305/3.0.1
jsr305/1.3.9

我试过删除 ./gradle文件夹并重新同步项目。我看到gradle仍然下载之前的jsr305版本。

这些是我在 gradle 中的依赖项:
implementation "com.facebook.react:react-native:${versions.reactNative}"
implementation ("com.google.code.findbugs:annotations:3.0.1") {
exclude group: 'net.jcip', module: 'jcip-annotations'
}

我的问题:
  • 为什么 Gradle 还在下载旧版本的 jsr305 ?
  • 尽管 jsr305 版本得到解决,为什么 multidex 会抛出该错误?

  • 创建了一个测试项目,该项目显示了即使在强制解决之后也下载旧 lib 版本的行为:
    https://github.com/vineyugave/scratchpad

    您还可以在此处查看 gradle 扫描:
    https://scans.gradle.com/s/tzrobr2zuar3c/dependencies?dependencies=jsr&expandAll

    最佳答案

    模块 :firstlib引用资料 implementation "com.google.code.findbugs:jsr305:2.0.0" ,
    应该是 implementation "com.google.code.findbugs:jsr305:3.0.2" ...但另一个 build.gradle与问题不匹配,因为它缺少 react-native .
    dependencies模块 :app应该看起来相似(只有更改):

    dependencies {
    implementation "com.android.support:appcompat-v7:28.0.0"
    implementation "com.android.support:recyclerview-v7:28.0.0"
    implementation "com.android.support:support-v4:28.0.0"
    implementation ("com.facebook.react:react-native:0.20.1") {
    exclude group: "com.android.support", module: "recyclerview-v7"
    exclude group: "com.android.support", module: "support-v4"
    }
    //noinspection GradleDependency
    implementation "com.google.guava:guava:24.1-android"

    }

    configurations.all {
    resolutionStrategy.force "com.google.code.findbugs:jsr305:3.0.2"
    resolutionStrategy.force "com.google.guava:guava:24.1-android"
    }
  • 它正在下载旧版本,因为它们需要从需要它们的依赖项中明确排除(如上所示)。可以用 ./gradlew app:dependencies 列出它们。然后 exclude他们相应地。
  • 任务:app:transformClassesWithMultidexlistForDebug失败,因为 react-native 引起的支持库版本冲突(已在上面的示例中修复)。
  • 当移动那些 jniLibs来自 armeabi进入 armeabi-v7a ,它不会再提示缺少剥离工具了。但是,它们不会被加载到 arm64-v8a了。
  • 关于java - Android Gradle ResolutionStrategy force 仍然会下载以前版本的 lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52744845/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com