android - Mapbox - LostLocationEngine 解析失败

标签 android gradle mapbox mapbox-android

当我尝试开始导航时:

MapboxNavigation navigation = new MapboxNavigation(this, Mapbox.getAccessToken(), options);
navigation.startNavigation(route);

我在运行时遇到以下错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/mapbox/services/android/telemetry/location/LostLocationEngine;
Caused by: java.lang.ClassNotFoundException: Didn't find class "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

使用版本0.13.0-SNAPSHOT

repositories {
    mavenCentral()
    maven { url "http://oss.sonatype.org/content/repositories/snapshots/" }
}

dependencies {
    implementation'com.mapbox.mapboxsdk:mapbox-android-navigation:0.13.0-SNAPSHOT'
}    

解释

问题是 LocationLayerPlaces 使用的是 Mapbox 6(LocationLayer 0.5.0Places 0.3.0),但导航使用的是 Mapbox 5(Navigation 0.12.0) .

当您组合这 3 个库时,如果 2 个库共享相同的依赖项,Gradle 将尝试使用最新版本的依赖项。

在我们的例子中,mapbox-android-telemetry 将从 2.2.10 升级到 3.0.2。这就是为什么当 nagivation 试图在 com.mapbox.services.android.telemetry.location (v2) 下找到 LostLocationEngine 时它失败了,因为这个分类移动到 com.mapbox.services.android.location (v3).

如果你想知道如何查看依赖版本,look here

关于android - Mapbox - LostLocationEngine 解析失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50076616/

相关文章:

android - 更新客户端中的 recyclerview item ui 以指示服务器上的 Firebase 数据库已更新

Android Studio 构建失败 - 任务 :app:dexBuilderDebug FAILED

java - Gradle 编译项目因 Spring Boot 插件失败

java - 设置标注图像 mapbox android

android - 将应用程序带回前台

java - Android AsyncTask 从 URL 读取数据返回 android.os.NetworkOnMainThreadException

android - FirebaseInitProvider : FirebaseApp initialization unsuccessful

java - 如何在我的 Mapbox 图层的左上角添加导航菜单和抽屉

data-visualization - 排除 Mapbox Studio 中指定区域之外的标签

java - 如何为低于 28 的 API 在铃声实例上启用循环?