Skip to content

Latest commit

 

History

History
127 lines (100 loc) · 13.7 KB

updates.md

File metadata and controls

127 lines (100 loc) · 13.7 KB

Обновления приложения

English

Откройте Настройки → Обновления приложения, чтобы проверить новую версию, выбрать источник или отключить автоматическую проверку. Автопроверка включена по умолчанию; автоматическое скачивание APK и установка без подтверждения не включены. Этот механизм работает в релизах, содержащих его, а не в ранее установленных старых APK.

Выбор источника

Явный выбор пользователя сохраняется и имеет приоритет. Иначе MegaProxy запрашивает у Android имя приложения, которое выполнило установку:

Установщик, указанный Android Источник обновлений
Официальный F-Droid (org.fdroid.fdroid) или его привилегированный установщик F-Droid
Другой установщик, обрабатывающий ссылки fdroidrepo:// или fdroidrepos:// F-Droid
Другой именованный установщик без этих обработчиков, включая браузер и файловый менеджер GitHub
Установщик не указан, пуст, сведения недоступны или проверка обработчиков завершилась ошибкой Предложить выбор; до выбора фоновых запросов нет

Поддержка ссылок проверяется только у установщика: наличие другого клиента F-Droid на устройстве не меняет источник. Это эвристика возможностей, не доказательство происхождения APK. Для клиентов без этих обработчиков нужен ручной выбор. Имя установщика не указывает сайт скачивания. APK с сайта F-Droid, открытый через браузер, также первоначально получает источник GitHub. Это выбор по умолчанию, а не доказательство происхождения APK. Смена источника не отменяет проверку подписи.

Автопроверка и уведомления

Android планирует проверку примерно раз в сутки при наличии сети, в том числе после перезагрузки. Экономия батареи, Doze, отсутствие сети, принудительная остановка или ограничения фоновой работы могут задержать проверку; точное время не гарантируется. Проверка загружает только метаданные релиза. Если установщик неизвестен, сначала выберите источник в настройках.

На экране обновлений показаны время, источник и результат последней фоновой попытки, в том числе состояние «ещё не запускалась» или прерванная проверка. Ручная проверка не перезаписывает эти данные. При ошибке сети или HTTP 429/5xx запрашивается повтор через 30 минут с увеличением интервала; Android может отложить его. При других ошибках следующая попытка будет по суточному расписанию. Текст исключений, адреса и учётные данные в этой диагностике не сохраняются.

Найденная новая версия сохраняется даже при запрещённых уведомлениях. При входе в приложение появляется диалог: Обновить открывает экран обновлений GitHub для повторной проверки и отдельного согласия на скачивание; Обновить через F-Droid открывает карточку в совместимом клиенте или браузере. Напомнить через неделю (также закрытие диалога) откладывает диалог и уведомление для этой версии на неделю. Пропустить эту версию скрывает оба напоминания только для этой версии и источника, но не скрывает её при ручной проверке. Успешная проверка без обновления, установленная новая версия или смена выбранного источника не позволяют показать устаревший диалог.

О новой версии появляется уведомление, если разрешены уведомления приложения и канал Обновления приложения. На Android 13 и новее разрешите уведомления при запросе или используйте кнопку разрешения на экране обновлений.

Действия в уведомлении:

  • Обновить — открыть экран обновлений и заново проверить выбранный источник. Для F-Droid ссылка карточки открывается в совместимом клиенте или браузере. Для GitHub требуется отдельное согласие на скачивание.
  • Пропустить версию — больше не напоминать автоматически об этой версии в этом источнике. О следующих версиях уведомления появятся. Ручная проверка покажет и пропущенную версию.
  • Отключить автопроверку — отменить фоновые проверки, убрать уведомление и скрыть автоматический диалог обновления. Ручная проверка остаётся доступной. Включить автопроверку обратно можно в настройках.

Игнорирование или смахивание уведомления не пропускает версию. Следующая успешная фоновая проверка не раньше чем через семь дней после предыдущего уведомления может напомнить снова. Более новая версия может вызвать уведомление раньше. Пропуск и время напоминания сохраняются после завершения процесса и перезагрузки; очистка данных приложения их удаляет. Запрет уведомлений или канала не отключает сами проверки, но блокирует напоминания.

F-Droid

MegaProxy обращается к официальному API приложения и сравнивает код рекомендуемой опубликованной версии с установленным APK. Более высокая экспериментальная версия не выбирается только из-за большего кода. Установкой, выбором пакета и его проверкой занимается F-Droid.

Приложение пока не опубликовано в F-Droid. Отсутствие карточки показывается как недоступность, а не как отсутствие обновлений. При ошибке сети или API источник не переключается на GitHub.

GitHub

MegaProxy проверяет последний стабильный GitHub Release и сохраняет вариант установленного APK: universal, arm64-v8a, armeabi-v7a, x86 или x86_64. Вариант записывается при сборке, а не определяется по процессору телефона. Если соответствующего APK нет в релизе, проверка завершается ошибкой без подмены другим вариантом. Существующие коды версий не меняются.

  1. Нажмите Скачать с GitHub и прочитайте подтверждение. В нём указано, что обновление обходит проверки F-Droid. Отмена ничего не скачивает и не меняет установленное приложение.
  2. После согласия MegaProxy скачает выбранный APK по HTTPS в закрытый кеш. Проверяются размер, SHA-256 из метаданных GitHub, идентификатор приложения, версия релиза, больший код версии с тем же смещением варианта и совпадение сертификатов подписи с установленным приложением. Сборку с другим ключом, включая debug, заменить таким способом нельзя.
  3. Нажмите Установить обновление. Если Android запросит разрешение, разрешите установку из MegaProxy, вернитесь и нажмите кнопку ещё раз. Системный установщик проверит APK и запросит подтверждение. После установки разрешение можно отключить.

Samsung Galaxy: если установку обновления из APK блокирует Автоблокировка (Auto Blocker), отключите её в Настройки → Безопасность и конфиденциальность → Автоблокировка. При запросе разрешите установку из MegaProxy. После установки автоблокировку можно включить обратно; перед следующим обновлением из APK её потребуется снова отключить. Инструкция по установке на Samsung.

Скачивание переживает поворот экрана, пока экран обновлений остаётся в стеке навигации. Выход из него может отменить операцию. При завершении процесса состояние ожидающей установки теряется: проверьте и скачайте обновление заново. В кеше остаются текущий APK и один предыдущий. Во время скачивания удаляются незавершённые файлы старше двух дней. Android или очистка данных также могут удалить файлы кеша. Ошибка проверки или скачивания не удаляет и не заменяет рабочее приложение. Не удаляйте приложение ради исправления конфликта подписи или понижения версии: это удалит профили и настройки.

Сетевые запросы и реализация

Запросы направляются только в выбранный источник. Профили, пароли, посещённые адреса и список приложений не отправляются. Сервис видит запрос и исходящий IP и обрабатывает их по своей политике.

  • Метаданные F-Droid: https://f-droid.org/api/v1/packages/net.megaproxy487.
  • Метаданные GitHub: https://api.github.com/repos/andre487/AndroidMegaProxy/releases/latest.
  • Скачивание APK после согласия: соответствующий файл конкретной версии по адресу https://github.com/andre487/AndroidMegaProxy/releases/download/ с HTTPS-переадресацией на CDN GitHub (release-assets.githubusercontent.com).

Используется обычная сеть Android с учётом действующих правил VPN. Дополнительное прокси-соединение внутри приложения не создаётся. Размер метаданных и APK ограничен; установлены тайм-ауты подключения и чтения. API-ключ, аккаунт и новые зависимости не нужны.

Источники: API F-Droid, правила согласия F-Droid, сведения об установщике Android.