Unact / yandex_mapkit

Flutter implementation of YandexMapkit
MIT License
132 stars 151 forks source link

Не отображаются карты на Android старых версий (7,8,9) #369

Open No1Ks opened 1 week ago

No1Ks commented 1 week ago

Здравствуйте. На версии флаттера 3.19.5 и версии yandex_mapkit 4.0.2 не отображаются карты на старых андроидах.

Вот что выдаёт:

W/yandex.maps( 7619): 8ZlTmcrzpEGFmW+NO6NK: Layer: map, url: https://proxy.mob.maps.yandex.net:443/mapkit2/layers/2.x/map/tiles
W/yandex.maps( 7619): 8ZlTmcrzpEGFmW+NO6NK: Layer: vskl2, url: https://proxy.mob.maps.yandex.net:443/mapkit2/layers/2.x/vskl2/tiles
W/yandex.maps( 7619): 8ZlTmcrzpEGFmW+NO6NK: Layer: sat, url: https://proxy.mob.maps.yandex.net:443/mapkit2/layers/2.x/sat/tiles
W/yandex.maps( 7619): 8ZlTmcrzpEGFmW+NO6NK: Layer: vmap3, url: https://proxy.mob.maps.yandex.net:443/mapkit2/layers/2.x/vmap3/tiles
W/yandex.maps( 7619): 8ZlTmcrzpEGFmW+NO6NK: Layer: vtrf2, url: https://proxy.mob.maps.yandex.net:443/mapkit2/layers/2.x/vtrf2/tiles
W/yandex.maps( 7619): 8ZlTmcrzpEGFmW+NO6NK: Layer: vre2, url: https://proxy.mob.maps.yandex.net:443/mapkit2/layers/2.x/vre2/tiles
I/ianca.mobileap( 7619): Rejecting re-init on previously-failed class java.lang.Class<com.yandex.runtime.sensors.internal.telephony.TelephonySubscription$1>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/telephony/TelephonyManager$CellInfoCallback;
I/ianca.mobileap( 7619): (Throwable with empty stack trace)
I/ianca.mobileap( 7619): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.telephony.TelephonyManager$CellInfoCallback" on path: DexPathList[[zip file "/data/app/ru.bianca.mobileapp--WgB6RDp2FwtB--fB4SHww==/base.apk"],nativeLibraryDirectories=[/data/app/ru.bianca.mobileapp--WgB6RDp2FwtB--fB4SHww==/lib/arm64, /data/app/ru.bianca.mobileapp--WgB6RDp2FwtB--fB4SHww==/base.apk!/lib/arm64-v8a, /system/lib64]]
I/ianca.mobileap( 7619):   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
I/ianca.mobileap( 7619):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
I/ianca.mobileap( 7619):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/ianca.mobileap( 7619): 
I/ianca.mobileap( 7619): Rejecting re-init on previously-failed class java.lang.Class<com.yandex.runtime.sensors.internal.telephony.TelephonySubscription$1>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/telephony/TelephonyManager$CellInfoCallback;
I/ianca.mobileap( 7619): (Throwable with empty stack trace)
I/ianca.mobileap( 7619): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.telephony.TelephonyManager$CellInfoCallback" on path: DexPathList[[zip file "/data/app/ru.bianca.mobileapp--WgB6RDp2FwtB--fB4SHww==/base.apk"],nativeLibraryDirectories=[/data/app/ru.bianca.mobileapp--WgB6RDp2FwtB--fB4SHww==/lib/arm64, /data/app/ru.bianca.mobileapp--WgB6RDp2FwtB--fB4SHww==/base.apk!/lib/arm64-v8a, /system/lib64]]
I/ianca.mobileap( 7619):   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
I/ianca.mobileap( 7619):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
I/ianca.mobileap( 7619):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/ianca.mobileap( 7619): 
I/PlatformViewsController( 7619): Hosting view in a virtual display for platform view: 0
I/PlatformViewsController( 7619): PlatformView is using SurfaceTexture backend
D/EGL_emulation( 7619): eglMakeCurrent: 0x7a07e4fea0: ver 3 0 (tinfo 0x7a07f38420)
I/ianca.mobileap( 7619): Background concurrent copying GC freed 46246(2MB) AllocSpace objects, 26(776KB) LOS objects, 50% free, 4MB/8MB, paused 57us total 250.286ms
W/yandex.maps( 7619): dQ4Fu+4yvbe+Jwe+ezna: Decoding style: JSON size: 1563839 bytes, archive size: 305989 bytes
E/BufferQueueProducer( 7619): [SurfaceTexture-0-7619-0] connect: already connected (cur=1 req=1)
W/yandex.maps( 7619): exzE5YCJBAIZrPmasRuK: ##  decodeStyle duration: 423
D/HostConnection( 7619): HostConnection::get() New Host Connection established 0x79d88f3c20, tid 7804
D/EGL_emulation( 7619): eglMakeCurrent: 0x7a07e4fea0: ver 3 0 (tinfo 0x7a07f38420)
D/HostConnection( 7619): HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_sync_buffer_data GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_3_0 
W/yandex.maps( 7619): XMCuGl4Nfl5wkXbkDBlj: Create OpenGl ES context version 3
D/eglCodecCommon( 7619): setVertexArrayObject: set vao to 0 (0) 0 0
D/EGL_emulation( 7619): eglCreateContext: 0x79d88f3d60: maj 3 min 0 rcv 3
D/EGL_emulation( 7619): eglMakeCurrent: 0x79d88f3d60: ver 3 0 (tinfo 0x79e1fb99e0)
E/eglCodecCommon( 7619): glUtilsParamSize: unknow param 0x00008a2b
E/eglCodecCommon( 7619): glUtilsParamSize: unknow param 0x00008a2b
E/eglCodecCommon( 7619): glUtilsParamSize: unknow param 0x00008a2d
E/eglCodecCommon( 7619): glUtilsParamSize: unknow param 0x00008a2d
E/eglCodecCommon( 7619): glUtilsParamSize: unknow param 0x00008a2e
E/eglCodecCommon( 7619): glUtilsParamSize: unknow param 0x00008a2e
E/eglCodecCommon( 7619): glUtilsParamSize: unknow param 0x00008a30

Зависимости: distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "7.3.0" apply false
    id "org.jetbrains.kotlin.android" version "1.8.22" apply false
    id "com.google.gms.google-services" version "4.3.15" apply false
    id "com.google.firebase.crashlytics" version "2.9.7" apply false
}
DCrow commented 1 week ago

Добрый день!

Старые это какие версии андроид и sdk? Плагин поддерживает sdk версии выше или равной 21. В чем выражается "не отображается карта"? Полностью пустое отображение или сетка? Также какие другие плагины используются?(pubspec библиотеки).

No1Ks commented 1 week ago

Создал чистый проект с картами и завелось на старых версиях. Начал экспериментировать и обнаружил, что карты не работали из-за этого параметра:

AndroidYandexMap.useAndroidViewSurface = false

Сложно сказать для чего это было сделано, но вот с ним старые версии андроида перестают работать на новых версиях пакета.