Android Mapbox-解析LostLocationEngine失败

Android Mapbox-解析LostLocationEngine失败,android,gradle,mapbox,mapbox-android,Android,Gradle,Mapbox,Mapbox Android,当我尝试启动导航时: MapboxNavigation navigation = new MapboxNavigation(this, Mapbox.getAccessToken(), options); navigation.startNavigation(route); 我在运行时遇到以下错误: java.lang.NoClassDefFoundError:解析失败:Lcom/mapbox/services/android/telemetry/location/LostLocationEn

当我尝试启动导航时:

MapboxNavigation navigation = new MapboxNavigation(this, Mapbox.getAccessToken(), options);
navigation.startNavigation(route);
我在运行时遇到以下错误:

java.lang.NoClassDefFoundError:解析失败:Lcom/mapbox/services/android/telemetry/location/LostLocationEngine;
原因:java.lang.ClassNotFoundException:未找到类“com.mapbox.services.android.telemetry.location.LostLocationEngine”
实际上,我无法从该位置导入该类,但是LocationEngine可从
com.mapbox.services.android.location.LostLocationEngine
获得。我认为这可能与依赖性有关。这是我从Gradle文件中的mapbox构建的内容:

implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-places:0.3.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-locationlayer:0.5.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-navigation:0.12.0'
如何解决这个问题,以便在我的应用程序中启动导航?

TL:DR

使用版本

解释

问题是
LocationLayer
Places
使用的是地图框6(,),但导航使用的是地图框5()

当您组合这3个库时,当两个库共享同一个库时,Gradle将尝试使用依赖项的最新版本

在我们的例子中,
mapboxandroid遥测
将从2.2.10升级到3.0.2。这就是为什么当Nagiviation尝试在
com.mapbox.services.android.telemetry.location
(v2)下查找
LostLocationEngine
时失败的原因,因为该类移动到
com.mapbox.services.android.location
(v3)


如果您想知道如何检查依赖项版本,请将此行添加到gradle中,或者如果您已经有mapbox android服务,请将其版本更改为2.2.9

implementation ('com.mapbox.mapboxsdk:mapbox-android-services:2.2.9@aar'){
    transitive=true
}

好奇,你用的是ProGuard吗?你用的是哪个版本的mapbox?@stkent minifyEnabled设置为false,所以我想我没有用ProGuard。@小米这篇文章中提到的几行都是关于mapbox的。所以我认为这给了我mapbox版本6?
implementation ('com.mapbox.mapboxsdk:mapbox-android-services:2.2.9@aar'){
    transitive=true
}