LINUX.ORG.RU
Форум — Mobile  

Android-приложение банка Новиком — белый экран

 , ,


0

1

На старый телефон, с Android 9, переставив в новый телефон SIM-карты, удалив все контакты и данные, установил несколько банковских приложений.

Приложение указанного банка устанавливал, скачивая apk-файл с их сайта. Примерно в начале сентября 2026 года старая версия окончательно перестала работать и пришлось обновиться до последней, которая при старте (неважно: наличие интернета, настроек, сразу после установки) вываливалась в белый экран и так могла висеть бесконечно, ни на что не реагируя.

По телефону в банке посоветовали: перегрузить телефон, чистить, переустанавливать, «танцевать с бубном», купить новый телефон, дарить - отказались, как и принимать претензию по телефону.

На письменный запрос, в ответе посоветовали: «Яндекс Браузер», перегрузить, менять точки доступа, отключить VPN (там его нет), обновить HMS Core (???), обновить «WebView».

На RuStore нашёл несколько отзывов с похожим симптомом.

Google Gemini тоже посоветовал обновить WebView, но после уточняющего вопроса про Android 9 изменил свой совет:

Да, вы абсолютно правы в своих сомнениях. Официально Google прекратила выпускать новые версии Google Chrome и Android System WebView для Android 9. Для этой операционной системы последние совместимые версии компонентов заморожены, из-за чего современные российские банковские приложения часто выдают белый экран. Однако решить эту проблему на Android 9 всё же можно. Дело в том, что в архитектуре Android 7, 8 и 9 компонент WebView жестко привязан к Google Chrome. Если ломается или устаревает Chrome, ломается отображение веб-интерфейсов внутри других программ.

В итоге понял, что обновлять надо Google Chrome, но мне хотелось понять, в чём же дело, тогда «скормил» apk-файл приложения банка, ИИ-агенту под управлением MiMo-V2.6-Flash, он нагенерил отчёт с несколькими гипотезами, и предложил для их проверки подключить телефон к компьютеру в режиме отладки, что я и сделал, и через полчаса приложение заработало, агент сам скачал и обновил до нужной версии Google Chrome, сначала хотел WebView, но повторил выводы Gemini.

Помимо прочего, в отчёте написал и про ошибки разработчиков:

Рекомендации (подтверждены экспериментом)

Для пользователей / на стороне устройства:

  1. Обновить WebView/Chrome до версии ≥ Chrome 93 (нужен как минимум Chrome 93 для Object.hasOwn, Chrome 85 для replaceAll). На этом устройстве системный WebView зафиксирован на Chromium 79 — штатно не обновляется (новейшие сборки требуют Android 10+, устройство на Android 9). → Требуется ручная установка совместимой сборки (например, Chrome 119 — проверено рабочей) либо производителем ОС обновление WebView.

Для разработчиков приложения (правильное решение):

  1. Не использовать API новее поддерживаемого минимума WebView, либо полифиллить: Object.hasOwn → Object.prototype.hasOwnProperty.call(...); String.replaceAll → .split/join или .replace(/…/g, …).
  2. Добавить .catch() к Promise.all бутстрапа и показывать экран ошибки вместо белого экрана (сейчас ошибка молча проглатывается — главный усилитель бага).
  3. Задать разумный LoadUrlTimeoutValue (сейчас 1 000 000 мс ≈ 16,7 мин) и errorUrl в config.xml, чтобы показывать ошибку, а не белый экран.
  4. Устранить противоречие usesCleartextTraffic="false" ↔ network_security_config: cleartext=true.

Итого: банк, размещая приложение для скачивания, нигде не указывает, на какое окружение оно рассчитано, с какими версиями может работать. Разработчики, вместо минимальной обработки ошибок, предлагают клиентам писать им на почту (см. RuStore).

Анекдот:
- У вас на работе искусственный интеллект используют?
- У нас даже естественный не используют!

У меня была похожая ситуация с яндексовым супераппом на Android 8. На одной из «страниц» ничего не отображалось, но по косвенным признакам было видно, что пытается работать с сервисом яндекс-форм. Я сначала думал, что дело в системных TLS-сертификатах, подсунул недостающие, но проблему это не решило. Потом догадался открыть Яндекс-Формы на ПК и обнаружил, что оно не работает на старых веб-браузерах. Дальше уже обновил Google Chrome на android.

MirandaUser2 ★★
()

Добавить .catch() к Promise.all бутстрапа и показывать экран ошибки вместо белого экрана (сейчас ошибка молча проглатывается — главный усилитель бага).

К сожалению очень мало софта и веб-сайтов с такой дагностикой :-(

нигде не указывает, на какое окружение оно рассчитано,

конечно на самое последнее и никак иначе :-((

В Андроид вообще дурная диагностика ошибок. Банально установка приложений не срабатывает из-за недостатка места (и нет - 500MB для установки 50MB приложения почему-то недостаточно), но в сообщении об ошибке ничего нет, совсем.

MirandaUser2 ★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария