java - 如何从 Android 依赖项中排除 jar 文件?

标签 java android gradle dependencies androidx

我已经阅读并尝试了很多针对此问题的帖子解决方案,但我做错了一些事情,因为它不适合我。

我刚刚将 Android 更新为 AndroidX,它带有依赖项 androidx.preference:preference:1.1.0-alpha04。此依赖项包括名为 com.google.guava:listenablefuture:1.0@jar 的 jar 文件。问题是 com.google.common.util.concurrent.ListenableFuture 在依赖项中被发现两次,这在我构建项目时出现错误。我还发现整个 jar 文件 (androidx.preference:preference:1.1.0-alpha04) 可以被删除,因为其中的文件已经在另一个依赖库中。

我尝试添加一些符号来排除该库,但不幸的是,它们都没有成功。一旦我构建项目,jar 文件就会不断添加。

build.gradle

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation('org.ros.android_core:android_10:[0.3, 0.4)') {
        exclude group: 'junit'
        exclude group: 'xml-apis'
    }
    // e.g. official msgs
    implementation 'org.ros.rosjava_messages:std_msgs:0.5.11'
    implementation 'org.ros.rosjava_messages:sensor_msgs:1.12.7'
    implementation 'org.ros.rosjava_messages:geometry_msgs:1.12.7'
    implementation 'org.ros.rosjava_bootstrap:message_generation:0.3.3'
    implementation 'com.android.support.constraint:constraint-layout:2.0.0-alpha5'
    implementation ("androidx.preference:preference:1.1.0-alpha04", {
        exclude group: 'com.google.guava'
    })
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.mockito:mockito-core:2.27.0'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

repositories {
    mavenCentral()
}

可以排除的依赖:

enter image description here

我做错了什么或者我应该如何从依赖项中实际排除 jar 文件?

编辑:我想这样做的原因是因为我收到以下错误:

Duplicate class com.google.common.util.concurrent.ListenableFuture found in modules guava-12.0.jar (com.google.guava:guava:12.0) and listenablefuture-1.0.jar (com.google.guava:listenablefuture:1.0)

最佳答案

我认为这应该有效:

implementation ("androidx.preference:preference:1.1.0-alpha04", {
    exclude group: 'com.google.guava'
})

编辑

这个答案可能会对您有所帮助: https://stackoverflow.com/a/54717425/7947225

添加您的 gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

在你的 build.gradle 中添加

configurations {
   all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}

然后清理并最后构建项目。

关于java - 如何从 Android 依赖项中排除 jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56023301/

相关文章:

Android - 多个 AAR 变体 Nexus 上传

java - 尝试使用日期方法时出现日期异常

java - 数组索引在集合中越界,怎么办?

java - 如何在 Android 应用程序中显示键盘?

java - 使用 T 类扩展 ArrayList<T> 的方法

java - 使用 Comparator 类时,Android Studio Gradle 不会构建我的应用程序?

java - 这两个任务是同时执行的吗?

java - 更新/更改 ArrayList 中的值

android - 在 Android 应用中放置包含数据的 XML 文件的位置

java - 如何修复应用程序:lint error when building flutter app?