Mapbox - Сбой разрешения LostLocationEngine - PullRequest
0 голосов
/ 28 апреля 2018

Когда я пытаюсь запустить навигацию:

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. Я думаю, что это как-то связано с зависимостями. Это то, что я строю из mapbox в моем файле Gradle:

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'

Как я могу решить эту проблему, чтобы начать навигацию в моем приложении?

Ответы [ 2 ]

0 голосов
/ 21 августа 2018

добавьте эти строки в ваш gradle или, если у вас уже есть mapbox-android-services, измените его версию на 2.2.9.

implementation ('com.mapbox.mapboxsdk:mapbox-android-services:2.2.9@aar'){
    transitive=true
}
0 голосов
/ 28 апреля 2018

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'
}    

Объяснение

Проблема в том, что LocationLayer и Places используют Mapbox 6 ( LocationLayer 0.5.0 , Places 0.3.0 ), но навигация использует Mapbox 5 ( Навигация 0.12.0 ).

Когда вы объединяете эти 3 библиотеки, Gradle попытается использовать последнюю версию зависимостей, когда 2 библиотеки совместно используют один и тот же файл.

В нашем случае mapbox-android-telemetry будет обновлен с 2.2.10 до 3.0.2. Вот почему, когда нагивация пытается найти LostLocationEngine в com.mapbox.services.android.telemetry.location (v2), она терпит неудачу, потому что это классифицированное движение к com.mapbox.services.android.location (v3).

Если вы хотите узнать, как проверить версию зависимостей, посмотрите здесь

...