程序类型已存在:com.mapbox.android.core.location.GoogleLocationEngine

Program type already present: com.mapbox.android.core.location.GoogleLocationEngine

我正在尝试将 Mapbox 与 google 播放服务位置一起使用。

一切正常,直到我添加 implementation 'com.google.android.gms:play-services-location:16.0.0' 以便能够在应用程序处于后台时请求位置更新。

Gradle 构建良好,但在编译项目时出现以下错误:

....
Caused by: com.android.tools.r8.utils.AbortException: Error: Program type already present: com.mapbox.android.core.location.GoogleLocationEngine
at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:116)
at com.android.tools.r8.utils.Reporter.fatalError(Reporter.java:74)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:59)
... 57 more

我之前遇到过类似的问题,我能够排除导致该问题的库。但是,使用 Mapbox 我不知道如何解决这个冲突。

我尝试了什么:

implementation ('com.mapbox.mapboxsdk:mapbox-android-sdk:6.8.0'){
    exclude group: "com.google.android.gms", module: "play-services-location"
} // Probably will have no effect as this module doesn't seem to be a dependency of Mapbox

implementation ('com.google.android.gms:play-services-location:16.0.0'){
    force = true
}

如有任何帮助,我们将不胜感激。

编辑:尝试 Mapbox 的 7.0.0 beta2 版本似乎可以解决问题,但我想避免在产品中使用 beta 版本,所以如果有任何方法我可以制作当前版本的 Mapbox google play services location会很棒

添加 android 位置服务:

implementation 'com.google.android.gms:play-services-location:16.0.0'

在 build.gradle(应用级别)的末尾,在依赖项关闭部分之后添加此行:

apply plugin: 'com.google.gms.google-services'

像这样:

    dependencies {
       ...
       implementation 'com.google.android.gms:play-services-location:16.0.0'
    }
    apply plugin: 'com.google.gms.google-services'