Повторяющийся файл jar (ListenableFuture.class) при переходе на SDK New Place Google - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь перенести мой виджет Автозаполнение Places SDK Google на новый, используя это руководство по миграции .Но как только я пытаюсь сгенерировать свой релиз или отладочный apk, начинаю получать сообщение об ошибке

Duplicate jar entry [com/google/common/util/concurrent/ListenableFuture.class]

Я прочитал пару вопросов stackoverflow и другие ссылки и обнаружил, что это было вызвано дублированием guava (ListenableFuture).Зависимости уровня приложения перечислены ниже.

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation androidx.appcompat:appcompat:1.1.0-alpha01
implementation 'androidx.mediarouter:mediarouter:1.1.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.libraries.places:places:1.0.0'

implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-safetynet:16.0.0'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.google.android.material:material:1.1.0-alpha03'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.intuit.sdp:sdp-android:1.0.3'
implementation 'com.roughike:bottom-bar:2.3.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.razorpay:checkout:1.4.7'
implementation 'me.relex:circleindicator:1.2.2@aar'
implementation 'com.firebase:firebase-jobdispatcher:0.8.5'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.8'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.multidex:multidex-instrumentation:2.0.0'

}

То, что я до сих пор делал - 1. исключил прослушиваемое будущее из мест sdk

implementation ('com.google.android.libraries.places:places:1.0.0'){
    exclude group: 'com.google.guava', module: 'listenablefuture'
}

Результат был таким же.Все еще повторяющаяся ошибка ввода jar для listenablefuture

исключил всю гуаву из мест sdk

реализация ('com.google.android.libraries.places: place: 1.0.0') {исключить группу: 'com.google.guava'}

Результат НЕТ ошибки.Но apk установлен, когда я запускаю свою активность, содержащую виджет автозаполнения, он получает ошибку ниже и приложение вылетает.

Fatal Exception: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/common/base/Preconditions;
   at com.google.android.libraries.places.api.Places.initialize(Unknown Source:5)
   at com.google.android.libraries.places.api.Places.initialize(Unknown Source:1)
   at com.proyujan.proyujan.MapLeadActivity.onCreate(Unknown Source:26)
   at android.app.Activity.performCreate(Activity.java:7372)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302)
   at android.app.ActivityThread.-wrap12(Unknown Source)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
   at android.os.Handler.dispatchMessage(Handler.java:108)
   at android.os.Looper.loop(Looper.java:166)
   at android.app.ActivityThread.main(ActivityThread.java:7425)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
Найден модуль listenablefuture в моей зависимости appcompat.Выполните шаги 1 и 2 также с appcompat, но результат был таким же.

Пожалуйста, помогите.Как это решить.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

решено: наконец-то найдено решение.Я уже говорил, что при добавлении новой библиотеки зависимостей для мест SDK было обнаружено прослушиваемое дублирование в будущем, дубликат которого был в библиотеке AppCompat.

Я использовал последнюю библиотеку AppCompat, и здесь возникла проблема.Кажется, согласно Google Docs, стабильная версия 1.0.0.Поэтому, как только я вернул все обратно в стабильную версию, проблема была решена.

implementation 'androidx.appcompat:appcompat:1.0.0'

И не нужно ниже:

configurations {
    all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}
0 голосов
/ 14 февраля 2019

новые места SDK работает, но при переходе на Android x он не работает

, поэтому добавьте эти строки ниже в зависимости app / build

dependencies {
    implementation ('com.google.android.libraries.places:places:1.0.0'){
        exclude group: 'com.google.guava', module: 'listenablefuture'
    }
}

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