迁移到 New Place SDK google 时复制 jar (ListenableFuture.class)

Duplicate jar (ListenableFuture.class) while migrating to New Place SDK google

我正在尝试使用此 migration guide 将我的自动完成小部件 Places SDK Google 迁移到新的。但是一旦我尝试生成我的版本或调试 apk 开始收到错误

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

我阅读了几个 Whosebug 问题和其他参考资料,发现它是由重复的番石榴 (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

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

结果相同。 Still Duplicate jar entry error for listenablefuture

  1. 从位置 sdk 中排除了整个番石榴

    实施('com.google.android.libraries.places:places:1.0.0'){ 排除组:'com.google.guava' }

结果没有错误。但是安装了 apk,当我运行包含自动完成小部件的 activity 时,它会出现以下错误并且应用程序崩溃。

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)
  1. 在我的 appcompat 依赖项中找到了 listenablefuture 模块。也使用 appcompat 执行了第 1 步和第 2 步,但结果相同。

请帮忙。如何解决这个问题。

新地方 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'
   }
}

已解决:终于找到了解决方案。我之前说过在为 places SDK 添加新的依赖库时发现了可听的未来重复,重复在 AppCompat 库中。

我使用的是最新的 AppCompat 库,这就是问题所在。根据 google 文档,stable version 似乎是 1.0.0。所以一旦我将所有内容恢复到稳定版本,问题就解决了。

implementation 'androidx.appcompat:appcompat:1.0.0'

不需要以下内容:

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

该解决方案对我不起作用,但在我更新到 2.0.0 后问题得到修复,版本 1.0.0 给出了错误,所以使用:

implementation 'com.google.android.libraries.places:places:2.0.0'

将此依赖项添加到您的构建中:

api 'com.google.guava:guava:28.1-android'