yandexmobile / yandexmapkit-android

Yandex Map Kit for Android
160 stars 65 forks source link

Карты не отображаются на Samsung Galaxy смартфонах #249

Open pdapnz opened 7 years ago

pdapnz commented 7 years ago

Добрый день!

Существует непонятная проблема с библиотекой. На ряде устройств Samsung карта отображается только в самом мелком маштабе. На остальных масштабах только сетка из точек и все. В основном это Galaxy S6. Также отзывы об этом встречаются у владельцев: Galaxy S6 Android 6.0 Galaxy S6 Edge Android 6.0 Galaxy S7 Android 6.0 Galaxy S7 Edge Android 6.0 Galaxy Note4 Android 6.0 Galaxy Note4 Android 5.1 Galaxy Note4 Android 5.0

Удалось в живую протестировать проблему только в облаке на сервисе pcloudy.com на Galaxy S6. В логах которые мне удалось снять вот такая строка подозрительная: 12-28 13:38:17.072 W/System.err(17104): mkdir failed: ENOENT (No such file or directory) : /storage/emulated/0/yandexmaps/data/cache/ru-RU/200/config

И в тестируемом устройстве не было карты памяти. Могут быть какие-то проблемы из за этого? Права я все проверил, они есть.

saint13 commented 7 years ago

Спасибо. Попробуем глянуть. В ближайшее время

On 28 Dec 2016 11:39, "pdapnz" notifications@github.com wrote:

Добрый день!

Существует непонятная проблема с библиотекой. На ряде устройств Samsung карта отображается только в самом мелком маштабе. На остальных масштабах только сетка из точек и все. В основном это Galaxy S6. Также отзывы об этом встречаются у владельцев:

Galaxy S6 Android 6.0 Galaxy S6 Edge Android 6.0 Galaxy S7 Android 6.0 Galaxy S7 Edge Android 6.0 Galaxy Note4 Android 6.0 Galaxy Note4 Android 5.1 Galaxy Note4 Android 5.0

Удалось в живую протестировать проблему только в облаке на сервисе pcloudy.com на Galaxy S6. В лога которые мне удалось снять вот такая строка подозрительная: 12-28 13:38:17.072 W/System.err(17104): mkdir failed: ENOENT (No such file or directory) : /storage/emulated/0/yandexmaps/data/cache/ru-RU/200/config

И в тестируемом устройстве не было карты памяти. Могут быть какие-то проблемы из за этого? Права я все проверил, они есть.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/yandexmobile/yandexmapkit-android/issues/249, or mute the thread https://github.com/notifications/unsubscribe-auth/ABSEm513ds9Gl8q8xf4azEjFCL-RHCHtks5rMiA0gaJpZM4LWwtQ .

pdapnz commented 7 years ago

И дополнение еще такое. Возможно тоже играет роль. Приложение в котором проблема выявлена использует targetSdkVersion 22

pdapnz commented 7 years ago

После продолжительных мучений нашелся временный workaround для решения проблемы. Карта на обозначенных устройствах НЕ работает в HD режиме, который для них включен по умолчанию. Updated... Для обозначенных девайсов нужно просто вЫключать HD режим. mMapController.setHDMode(false); Проверено в том числе и на голом примере из репозитория библиотеки.

pdapnz commented 7 years ago

Здравствуйте! Удалось ли посмотреть что-то по данной проблеме? Workaround конечно снижает напряженность среди пользователей, но отключение HD режима приводит к более долгой загрузке карты. Хотелось бы чтобы карта работала как положено на этих смартфонах.

saint13 commented 7 years ago

Да удалось, надеюсь в ближайшее время будет фикс.

pdapnz commented 7 years ago

Большое спасибо. Ждем с нетерпением.

saint13 commented 7 years ago

Привет, будет возможность проверить версию, на падение ?

pdapnz commented 7 years ago

Попробую.

saint13 commented 7 years ago

напиши мне mksaint13@yandex-team.ru

ghost commented 7 years ago

Приветствую а когда планируется новый релиз?

pdapnz commented 7 years ago

saint13, дошло мое письмо с результатами проверки?

saint13 commented 7 years ago

Да, все принял сейчас смотрю в чем проблема и почему фикс не помог.

15 февр. 2017 г. 11:13 пользователь "pdapnz" notifications@github.com написал:

saint13, дошло мое письмо с результатами проверки?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/yandexmobile/yandexmapkit-android/issues/249#issuecomment-279944431, or mute the thread https://github.com/notifications/unsubscribe-auth/ABSEmwLG7pIadF266qwnrW5XXg3IdsnMks5rcrOugaJpZM4LWwtQ .

pdapnz commented 7 years ago

К сожалению в новой версии библиотеки 2.5.4 проблема все еще актуальна. Ничего не изменилось в этом плане. Протестировано на Samsung Galaxy S7 Edge (Android 7.0)

pdapnz commented 7 years ago

Не совсем понятно, почему исправление проблемы в 2.5.4 не работает. Дадите какой-нибудь комментарий? Могу протестировать в облаке если необходимо с расширенными логами версию библиотеки.

saint13 commented 7 years ago

Переписали тайловый движок загрузки. Проводил тестирование на устройствах, проблем не было обнаружено. Значит проблема уже не в нем. Так как у вас воспроизвелась данная проблема, значит есть какие то особенности. Теперь надо понять какие.

pdapnz commented 7 years ago

А это нормально *.so файлы внутри библиотек 2.5.3 и 2.5.4 при побайтовом сравнении ничем не отличаются? Или последний апдейт не затронул их? Я к тому что в апдейт точно все что нужно попало?

saint13 commented 7 years ago

Да все в порядке. Можно сказать что текущий мапкит полностью на Java. Скажи ты в Москве? Есть девайс на котором воспроизводится? Если да то может есть возможность приехать в офис, попробуем решить ее в реальном времени.

7 марта 2017 г., 10:17 пользователь pdapnz notifications@github.com написал:

А это нормально в *.so файлы внутри библиотек 2.5.3 и 2.5.4 при побайтовом сравнение ничем не отличаются? Или последний апдейт не затронул их? Я к тому что в апдейт точно все что нужно попало?

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/yandexmobile/yandexmapkit-android/issues/249#issuecomment-284641631, or mute the thread https://github.com/notifications/unsubscribe-auth/ABSEmyRTeB_FasAdaCfobhppVD8uE2G1ks5rjQSEgaJpZM4LWwtQ .

pdapnz commented 7 years ago

Я не в Москве и девайса нет к сожалению (сам страдаю от этого). Могу только в облаке тестировать на сервисе http://pcloudy.com/ Там есть trial бесплатный, которым я и пользуюсь как раз. Последний девайс на котором тестил Samsung Galaxy S7 Edge (Android 7.0)

pdapnz commented 6 years ago

А что будет если на Android 6.0 и выше не запросить runtime permission WRITE_EXTERNAL_STORAGE? Где библиотека в таком случае будет хранить кэш?

В семлах кстати нет запроса этих прав и targetSdkVersion 23. Возможно все проблемы из-за этого?

Странно, но на Xiaomi Mi Max (Android 7.0) без этих прав либа прекрасно работает. Возможно на Самсунгах есть какая-то особенность?

saint13 commented 6 years ago

Кеш теперь хранится в sqlite и может сохранить в себе только N тайлов, далее вытесняются более старые тайлы. N было рассчитано так, чтобы пользоваться в городе без необходимого запроса тайлов.

15 сент. 2017 г. 9:46 пользователь "pdapnz" notifications@github.com написал:

А что будет если на Android 6.0 и выше не запросить runtime permission WRITE_EXTERNAL_STORAGE? Где библиотека в таком случае будет хранить кэш?

В семлах https://github.com/yandexmobile/yandexmapkit-android/blob/master/yandexmapkit-sample/src/ru/mapkittest/YandexMapKitSampleActivity.java кстати нет запроса этих прав и targetSdkVersion 23. Возможно все проблемы из-за этого?

Странно, но на Xiaomi Mi Max (Android 7.0) без этих прав либа прекрасно работает. Возможно на Самсунгах есть какая-то особенность?

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/yandexmobile/yandexmapkit-android/issues/249#issuecomment-329696806, or mute the thread https://github.com/notifications/unsubscribe-auth/ABSEm8q89V0grwxjhXVTprwzbCeOVGLnks5sih0qgaJpZM4LWwtQ .

pdapnz commented 6 years ago

Т.е. WRITE_EXTERNAL_STORAGE вообще не нужен больше для библиотеки?

saint13 commented 6 years ago

Да

15 сент. 2017 г. 9:58 пользователь "pdapnz" notifications@github.com написал:

Т.е. WRITE_EXTERNAL_STORAGE вообще не нужен больше для библиотеки?

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/yandexmobile/yandexmapkit-android/issues/249#issuecomment-329698998, or mute the thread https://github.com/notifications/unsubscribe-auth/ABSEm8U7UDKfnCmsnj7_pOj7t3Y5xtsdks5siiAlgaJpZM4LWwtQ .

pdapnz commented 6 years ago

База называется cache.db?

helium:/data/data/ru.yandexmapkit.sample/databases $ ls -l
total 4904
-rw-rw---- 1 u0_a152 u0_a152 2486272 2017-09-15 10:34 cache.db
-rw------- 1 u0_a152 u0_a152   16928 2017-09-15 10:34 cache.db-journal
helium:/data/data/ru.yandexmapkit.sample/databases $ sqlite3 cache.db
SQLite version 3.9.2 2015-11-02 18:31:45
Enter ".help" for usage hints.
sqlite> .tables
android_metadata  cache
sqlite> .schema cache
CREATE TABLE cache (_id LONG PRIMARY KEY,cache BLOB);
saint13 commented 6 years ago

Могу узнать с какой целью интересуетесь?

15 сент. 2017 г. 10:47 пользователь "pdapnz" notifications@github.com написал:

База называется cache.db?

helium:/data/data/ru.yandexmapkit.sample/databases $ ls -l total 4904 -rw-rw---- 1 u0_a152 u0_a152 2486272 2017-09-15 10:34 cache.db -rw------- 1 u0_a152 u0_a152 16928 2017-09-15 10:34 cache.db-journal helium:/data/data/ru.yandexmapkit.sample/databases $ sqlite3 ca cache.db cache.db-journal helium:/data/data/ru.yandexmapkit.sample/databases $ sqlite3 cache.db SQLite version 3.9.2 2015-11-02 18:31:45 Enter ".help" for usage hints. sqlite> sqlite> .tables android_metadata cache sqlite> .tables android_metadata cache sqlite> .schema cache CREATE TABLE cache (_id LONG PRIMARY KEY,cache BLOB);

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/yandexmobile/yandexmapkit-android/issues/249#issuecomment-329708342, or mute the thread https://github.com/notifications/unsubscribe-auth/ABSEm6jInjex-TBL7zzVTwPhLP2dhHJ0ks5siiuigaJpZM4LWwtQ .

pdapnz commented 6 years ago

Да никакого криминала, на проблемном устройстве посмотреть есть ли кеш. Если что то приватное затонул, прошу прощения, сотри сообщения на эту тему.

saint13 commented 6 years ago

Все в порядке. Да действительно там лежит кеш.

15 сент. 2017 г. 12:05 пользователь "pdapnz" notifications@github.com написал:

Да никакого криминала, на проблемном устройстве посмотреть есть ли кеш. Если что то приватное затонул, прошу прощения, сотри сообщения на эту тему.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/yandexmobile/yandexmapkit-android/issues/249#issuecomment-329725347, or mute the thread https://github.com/notifications/unsubscribe-auth/ABSEmxCcwoRCLIGytJrP9Man4t1AhjvDks5sij3KgaJpZM4LWwtQ .

andrey-borodyuk commented 6 years ago

Приветствую!

Небольшое уточнение, проблема с HD-режимом не связана только с девайсами от Samsung.

Проблема присутствует на всех устройствах с достаточно высоким разрешением (близким к 4k), и когда MapView необходимо отобразить на весь экран. Соответственно, если на этих устройствах, отображать MapView с высотой, например, в половину экрана, то HD-режим – работает.

Пытался понять, при каком значении сторон в MapView, перестает работать HD-режим: Увеличивал постепенно стороны на значения, кратные 128px, и, когда одна из сторон достигала, какого-то критического значения, HD-режим переставал работать (на приближении карты уровня "Дом"). Выявить критическое значение не удалось, на разных устройствах по-разному.

Такой подход позволил воспроизводить этот баг на любом из устройств (с различными разрешениями): Если MapView установить жестко значения сторон, например 256 х 5632 px, то это последние значения, когда отображаются тейлы. Если, следующим шагом, увеличить одну из сторон на 1px, то воспроизводится баг.