我不得不按照如下方式下载此版本的jsr305:
std::map::emplace
尽管如此,我仍然看到在gradle同步期间,仍在下载旧版本(2.0.1和1.3.9):
我遇到如下编译错误:
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'
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仍下载先前的jsr305版本。
这些是我在gradle中的依赖项:
./gradle
我的问题:
创建了一个测试项目,该项目显示了即使强制解决后仍下载旧lib版本的行为: https://github.com/vineyugave/scratchpad
您还可以在此处查看gradle扫描: https://scans.gradle.com/s/tzrobr2zuar3c/dependencies?dependencies=jsr&expandAll
答案 0 :(得分:0)
模块:firstlib
引用implementation "com.google.code.findbugs:jsr305:2.0.0"
,
可能应该是implementation "com.google.code.findbugs:jsr305:3.0.2"
...但是另一个build.gradle
确实与问题不匹配,因为它缺少react-native
。
模块dependencies
的{{1}}应该看起来很相似(只有更改):
: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
上。