首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android force仍然下载以前版本的lib

Android force仍然下载以前版本的lib
EN

Stack Overflow用户
提问于 2018-10-10 16:27:22
回答 1查看 2.3K关注 0票数 0

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

代码语言:javascript
复制
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'

我看到,当我试图编译gradle时,它正在解析版本:

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

我得到的编译错误如下: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' }

我的问题:

  1. 为什么Gradle还在下载旧版本的jsr305?
  2. 尽管jsr305版本已经解决了,为什么multidex会抛出这个错误呢?

创建一个测试项目,该项目显示在强制解析之后下载旧库版本的行为:https://github.com/vineyugave/scratchpad

您还可以在这里看到分级扫描:https://scans.gradle.com/s/tzrobr2zuar3c/dependencies?dependencies=jsr&expandAll

EN

回答 1

Stack Overflow用户

发布于 2018-10-10 19:35:32

模块:firstlib引用implementation "com.google.code.findbugs:jsr305:2.0.0",它可能是implementation "com.google.code.findbugs:jsr305:3.0.2" ...but,另一个build.gradle并不真正匹配这个问题,因为它缺少react-native

模块dependencies of :app看起来应该是相似的(只有更改):

代码语言:javascript
复制
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引起的支持库版本冲突(在上面的示例中已经修复)。
  • 当这些jniLibsarmeabi转移到armeabi-v7a时,它不会再抱怨缺少脱衣舞工具了。但是,这样它们就不会再加载到arm64-v8a上了。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52744845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档