Сбой приложения флаттера на android 10 & R без метода c isAtLeastR - PullRequest
2 голосов
/ 02 апреля 2020

Я видел несколько схожих проблем, связанных с переполнением стека, но не тех, которые относятся к тем же библиотекам.

Я пытаюсь использовать 2 плагина в flutter flutter_geofence и geolocator

Они оба работали нормально, но со вчерашнего дня, как только сервисы определения местоположения вызываются, я завершаю работу приложения с трассировкой стека, подобной приведенной ниже:

E/flutter (11478): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.NoSuchMethodError: No static method isAtLeastR()Z in class Landroidx/core/os/BuildCompat; or its super classes (declaration of 'androidx.core.os.BuildCompat' appears in /data/app/com.mypossibleself.app-FTu9V5QDAKR_ngQmuPzg7Q==/base.apk!classes2.dex)
E/flutter (11478):  at com.google.android.gms.common.util.PlatformVersion.isAtLeastR(com.google.android.gms:play-services-basement@@17.2.1:21)
E/flutter (11478):  at com.google.android.gms.common.api.GoogleApi.zaa(com.google.android.gms:play-services-base@@17.2.1:128)
E/flutter (11478):  at com.google.android.gms.common.api.GoogleApi.<init>(com.google.android.gms:play-services-base@@17.2.1:41)
E/flutter (11478):  at com.google.android.gms.common.api.GoogleApi.<init>(com.google.android.gms:play-services-base@@17.2.1:56)
E/flutter (11478):  at com.google.android.gms.location.FusedLocationProviderClient.<init>(Unknown Source:8)
E/flutter (11478):  at com.google.android.gms.location.LocationServices.getFusedLocationProviderClient(Unknown Source:2)
E/flutter (11478):  at com.baseflow.geolocator.tasks.LocationUpdatesUsingLocationServicesTask.<init>(LocationUpdatesUsingLocationServicesTask.java:29)
E/flutter (11478):  at com.baseflow.geolocator.tasks.TaskFactory.createStreamLocationUpdatesTask(TaskFactory.java:120)
E/flutter (11478):  at com.baseflow.geolocator.GeolocatorPlugin.onListen(GeolocatorPlugin.java:110)
E/flutter (11478):  at io.flutter.plugin.common.EventChannel$IncomingStreamRequestHandler.onListen(EventChannel.java:193)
E/flutter (11478):  at io.flutter.plugin.common.EventChannel$IncomingStreamRequestHandler.onMessage(EventChannel.java:172)
E/flutter (11478):  at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:93)
E/flutter (11478):  at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:642)
E/flutter (11478):  at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (11478):  at android.os.MessageQueue.next(MessageQueue.java:336)
E/flutter (11478):  at android.os.Looper.loop(Looper.java:174)
E/flutter (11478):  at android.app.ActivityThread.main(ActivityThread.java:7356)
E/flutter (11478):  at java.lang.reflect.Method.invoke(Native Method)
E/flutter (11478):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
E/flutter (11478):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Так что он жалуется на отсутствует метод isAtLeastR

Другие ссылки, которые я видел на это упоминание, указывают c версии com.google. android .gms: play-services-base вызывает это, но это исправлено в com. google. android .gms: play-services-base: 17.2.1

Ни одна из этих библиотек не реализует этот пакет в своих файлах build.gradle, так что я не знаю, что нужно делать, чтобы исправить этот вопрос.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

В app / build.gradle add com.google.android.gms:play-services-base:17.2.1 это должно заставить библиотеки использовать указанную c версию play-services.

Если это не поможет, возможно, потребуется

configurations.all {
    resolutionStrategy {
        force 'com.google.needed_dependency'
    }
}

https://flutter.dev/docs/development/packages-and-plugins/using-packages#conflict -разрешение

Редактировать согласно предложению Эндрюса:

17.2.1 не работает, но 17.0.0 работает.

implementation("com.google.android.gms:play-services-base:17.0.0"){ force = true } 
0 голосов
/ 17 апреля 2020
resolutionStrategy {
            force 'com.google.android.gms:play-services-base:17.1.0' 
        }           
}

Это то, что решило это для меня.

...