Как исключить файл JAR из зависимости Android? - PullRequest
0 голосов
/ 07 мая 2019

Я прочитал и попробовал много пост-решений для этой проблемы, но есть кое-что, что я делаю неправильно, потому что это не работает для меня.

Я только что обновил Android до AndroidX с зависимостью androidx.preference:preference:1.1.0-alpha04. Эта зависимость включала файл jar с именем com.google.guava:listenablefuture:1.0@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)

1 Ответ

1 голос
/ 07 мая 2019

Я думаю, что это должно работать:

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'
}

Затем очистите и, наконец, соберите проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...