Size: a a a

Wi-Fi в метро

2018 July 28
Wi-Fi в метро
Исправил бэкенд, теперь устаревшие ветки всё-таки будут пропадать без необходимости удаления сборок из Jenkins. Просто у Jenkins после обновления поменялся API, и случаи с ручным отключением ветки и удалением ветки с GitHub стали выглядеть по-разному.

Напомню, что если в приложении установлена устаревшая ветка, то оно предложит обновиться до master. Это имеет смысл, т.к. изменения из удаляемых веток чаще всего переносятся именно в master (эксперименты и новые функции).
источник
2018 July 29
Wi-Fi в метро
27-я сборка #webview!

1. Исправлены некоторые моменты, из-за которых приложение вылетало. Не все, но их теперь меньше.
2. Найден новый селектор элемента, по которому JavaScript определяет полную загрузку станицы авторизации, т.е. исправлена ошибка Synchronizer timed out.

Сейчас пытаюсь сделать WebView не в виде отдельного шага, а в виде полноценного алгоритма. Если так подумать, то авторизация в любом случае происходит на одной странице, так что должно хватить одного умного скрипта, который будет кликать нужные кнопки при их появлении. Главное, чтобы скрипт влез в адресную строку браузера.

Ссылка на актуальную сборку: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview

P.S. Кстати, #webview, похоже, достаточно эффективно избегает блокировки. Стоило мне в четверг один раз воспользоваться чистой сборкой #master, как в субботу прилетел бан. А до этого полгода никаких блокировок не видел. Так что пробуйте, пока опять не сломалась :)
источник
2018 August 10
Wi-Fi в метро
352-я сборка #master!

Добавлены долгожданные описания веток обновления на русском языке.

Актуальная ссылка на APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
Также была удалена ветка #beta, которая обновлялась даже реже, чем #play. И так релизов не хватает, чтобы их ещё и задерживать :)
источник
2018 August 11
Wi-Fi в метро
353-я сборка #master! Наконец-то избавился от многих костылей в системе обновления (хотя осталось ещё столько же).

1. Приложение больше не сохраняет выбор ветки. Вместо этого оно сразу предлагает скачать выбранную ветку, а в каждой сборке прописана константа.
2. Удалены вызовы sed из сборочного скрипта. На функциональность это не влияет, но исходный код всех сборок теперь в точности совпадает с тем, что есть на GitHub.
3. Убран код версии из релизной ветки (1.8.3.2-70 → 1.8.3.2), а также изменён формат версии с упоминанием ветки обновления (master-#352 → master #352).
4. Удалены ссылки на Google Play, т.к. они всё равно не работают.

Актуальная ссылка на APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
Обновил ветки webview и sdk-27. Ещё в sdk-27 поправил одну опечатку, из-за которой уведомления не работали.

webview: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
sdk-27: https://mosmetro.duckdns.org/api/v1/download.php?branch=sdk-27
источник
2018 August 14
Wi-Fi в метро
Вышли 355-я сборка master, 7-я sdk-27 и 29-я webview. Исправлено аварийное завершение при попытке проверить наличие обновлений без подключения к интернету.

master - https://mosmetro.duckdns.org/api/v1/download.php?branch=master
webview - https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
sdk-27 - https://mosmetro.duckdns.org/api/v1/download.php?branch=sdk-27

(описания веток теперь есть в самом приложении)
источник
Wi-Fi в метро
Вы пользуетесь приложением на Android 3.x? (это не ошибка, реально 3.x)
источник
2018 August 16
Wi-Fi в метро
356-я сборка #master!

Добавлен компонент, позволяющий отлавливать и собирать информацию об ошибках, приводящих к вылету приложения. Отправка отчётов будет производиться автоматически, т.е. от вас никаких действий не требуется. Эту функцию можно отключить, сняв галочку в главном меню "Отладка" - "Отчёты о сбоях".

Также была изменена программная структура меню настроек, в результате чего вес APK уменьшился с 1.42 МБ до 1.37 МБ несмотря на то, что пришлось отключить сжатие ресурсов.

Актуальная сборка master всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
357-я сборка #master!

* Исправлен вылет приложения на Android 8.0.0, связанный с устаревшей версией библиотеки OkHTTP (ACRA работает!).
* Добавлен вывод даты и времени завершения подключения в лог.


Актуальная сборка master всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2018 August 18
Wi-Fi в метро
358-я сборка #master!

Продолжаю устранять вылеты, обнаруженные с помощью ACRA. На этот раз должно быть устранено 3 вылета: из-за проверки обновлений, при просмотре лога подключения и при смене экранов в главном меню. Посмотрим, насколько эти решения сработают :)


Актуальная сборка master всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
Ещё вышла экспериментальная сборка, в которой я попытался исправить механизм смены алгоритма в MosMetroV3. Если увидите в логе упоминание MosMetroV3, то присылайте отчёты, они очень помогут :)

Также в этой сборке добавлены новые адреса generate_204, которые я проверил в пятницу. Если приложение ошибочно определит, что доступ в интернет есть или наоборот, опять же, отправьте мне лог.

Заранее спасибо!


Ссылка: https://mosmetro.duckdns.org/api/v1/download.php?branch=experimental
источник
2018 August 19
Wi-Fi в метро
359-я сборка #master!

Исправлен вылет при нажатии на E-mail разработчика на экране "О программе". Вылет происходил только если на устройстве не установлено ни одного клиента. Вот соответствующий тикет: #206.

Также в отчеты ACRA были добавлены название ветки и номер сборки, т.к. они исчезают из BuildConfig при сборке без атрибута debuggable и даже ProGuard здесь не помогает.


Актуальную сборку master всегда можно найти здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2018 August 20
Wi-Fi в метро
31-я сборка #webview!

Попытался исправить непрерываемый цикл с ошибкой Synchronizer timed out. Не уверен, поможет ли это решение, но в прошлый раз такой подход удивительно хорошо помог. Ох уж эта Java :)

Также в ветку перенесены все изменения из #master. В основном это ACRA, исправления вылетов и переписанное меню настроек (выглядит также, работает иначе).


Актуальную сборку webview всегда можно найти здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2018 August 21
Wi-Fi в метро
32-я сборка #webview!

#webview!

Циклическая ошибка Synchronizer timed out, по большей части, должна быть исправлена на всех версиях Android 4.4+. Более старые версии Android на этот раз в пролёте, но ничего не могу с этим поделать (поддержки нужного метода в них нет).

APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview

————

Новая ветка #webview-experimental!

#webview-experimental!

* Полностью переписал WebView-составляющую алгоритма MosMetroV2. Теперь это отдельный алгоритм MosMetroV2WV;
* Шаги подключения больше не повторяются — весь процесс происходит только в WebView и не возвращается к старому алгоритму;
* Действия на странице авторизации выполняет один скрипт JavaScript, который реагирует на появление кнопок и нажимает на них сразу же;
* В лог выводится результат внедрения скрипта на страницу, да и зацикливаться на этом шаге теперь особо нечему;
* Опция "Запускать раз в день" (pref_webview_always) в этой версии пока не реализована. Планирую написать её с нуля в следующих сборках;

Если у вас есть какие-либо идеи по поводу JavaScript-составляющей, весь скрипт находится здесь. Сейчас нужно предусмотреть все возможные кнопки пропуска рекламы (есть кнопка входа и закрытия полноэкранной рекламы), а также найти способ отключения видео в случае его появления.

Почему отдельная ветка? Всё просто: изменения очень масштабные, WebView нестабилен, поэтому его надо проверять в настоящей сети. Под конец действовал наугад, т.к. неизвестно, как поведёт себя система. Поэтому жду логов (успешных, с ошибками, любых) :)

APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview-experimental

————

Также напомню о ветке #experimental#experimental, которая появилась 18 августа.

В ней внесены некоторые изменения в алгоритм MosMetroV3 и хотелось бы узнать, сохранила ли она работоспособность. Если увидите в логе упоминание MosMetroV3, жду отчёта при любом исходе. Спасибо :)

APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=experimental
источник
Wi-Fi в метро
Забираю на тест (опрос пересоздан, public→anonymous)
anonymous poll

master – 75
👍👍👍👍👍👍👍 69%

webview – 21
👍👍 19%

webview-experimental – 11
👍 10%

experimental – 1
▫️ 1%

👥 108 people voted so far.
источник
Wi-Fi в метро
Первые тесты #webview-experimental показали, что она пока не особо работает.

* Часто ломается условие полной загрузки страницы и скрипт загружается слишком рано
* Скрипт входа может быть несовместим с некоторыми типами рекламы (особенно с видео)

Так что её ещё надо сильно дорабатывать. Поэтому пока можно протестировать #experimental, чтобы я её, наконец, удалил :)

experimental: https://mosmetro.duckdns.org/api/v1/download.php?branch=experimental
источник
2018 August 22
Wi-Fi в метро
2-я сборка #webview-experimental! Опять весь код перекопал.

* Смягчена проверка URL страницы авторизации на этапе ожидания завершения скрипта. Забыл, что сегменты до сих пор появляются в URL. Даже если бы алгоритм 1-й сборки дошёл до конца, он завершил бы WebView до того, как все скрипты отработают;
* Добавлен чёрный список ресурсов, которые WebView не будет загружать. В него вошли несколько рекламных доменов, а особенно все ссылки на видео. Теперь авторизация в идеальных условиях пролетает за несколько секунд и не должна прерывать музыку;
* Улучшен скрипт-автокликер: теперь он умеет нажимать на большее количество кнопок и даже останавливать видео, если оно всё-таки запустится;
* Теперь алгоритм MosMetroV2WV умеет определять, что устройство получило бан. Также он сообщит, если запрос страницы в WebView сорвался (такое ещё случается);

Спасибо за отчёты, они очень помогли! Присылайте ещё :)

————
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview-experimental
Примечание: работоспособность сборки ещё не подтверждена. Будьте готовы к тому, что она не сможет подключиться.
источник
Wi-Fi в метро
wifi_v_metro
Ещё вышла экспериментальная сборка, в которой я попытался исправить механизм смены алгоритма в MosMetroV3. Если увидите в логе упоминание MosMetroV3, то присылайте отчёты, они очень помогут :)

Также в этой сборке добавлены новые адреса generate_204, которые я проверил в пятницу. Если приложение ошибочно определит, что доступ в интернет есть или наоборот, опять же, отправьте мне лог.

Заранее спасибо!


Ссылка: https://mosmetro.duckdns.org/api/v1/download.php?branch=experimental
360-я сборка #master! Ветка #experimental удалена, а изменения из неё перенесены в #master.

* Исправлен маленький баг с дублирующимся временем завершения подключения в логе;
* Переключение между алгоритмами стало проще (по крайней мере в плане разработки);
* Добавлены новые адреса generate_204, чтобы снизить вероятность поломки проверки доступа в интернет;


Актуальная сборка master всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2018 August 23
Wi-Fi в метро
Результаты тестов 2-й сборки #webview-experimental (больше заметка для себя, но может и вам интересно будет)

* get() по-прежнему завершается на auth.wi-fi.ru, не дожидаясь полной загрузки auth.wi-fi.ru/auth. Скорее всего это происходит из-за задержки в работе JavaScript — страница успевает полностью загрузиться до перенаправления → onPageFinished вызывается перед shouldOverrideUrlLoading → get() завершается слишком рано;
* В проверке раннего выхода из get() был найден недочёт, из-за которого приложение не всегда определяло эту ошибку. В результате происходил Synchronizer timed out или Interrupted by Listener после загрузки favicon (сам favicon не виноват, просто он оказался крайним);
* Если провайдера определить не удалось, приложение запускает MosMetroV2 без WebView (уже исправлено, будет в 3-й сборке);
* Самое печальное: Найдено новое принципиальное ограничение WebView. Для авторизации необходимо отправить несколько POST-запросов, но WebView в сочетании с OkHttp умеет подменять только GET. В логе это можно заметить по коду 404 после запроса к `auth.wi-fi.ru/auth/init`;

С последним пунктом, по идее, можно справиться путём создания белого списка URL, которые должны запрашиваться только через POST. Ломаться он будет также часто, как и обычный алгоритм MosMetroV2 (т.е. чаще, чем мог бы, но достаточно редко), но других вариантов особо нет. Аналогичным образом можно справиться и с первым пунктом — захардкодить правильные варианты URL и ждать их появления. А потом вообще реализовать это в виде загружаемого скрипта и динамически обновлять по мере необходимости.

В общем, 2-я сборка, так же как и 1-я, пока не способна полностью пройти авторизацию. Но уже почти :)
источник