Приложения

Что такое Самообновление (OTA)

Что это

Приложение само проверяет, вышла ли новая версия, скачивает её и устанавливает, не заставляя пользователя искать файл. Список версий подписан ключом, чтобы подменить его было нельзя.

Как используем

В OshaVPN обновления раз в час: Android качает APK под свою архитектуру, Windows скачивает только изменившиеся файлы и откатывает замену при сбое. Есть канал для тестеров.

Где самообновление нужно бизнесу

  • Приложение раздаётся файлом, без магазина, и рассылать каждому новую версию вручную нереально.
  • Исправление ошибки должно дойти до всех за часы, а не когда пользователь сам заметит.
  • Подменённое обновление не должно установиться, даже если кто-то перехватил сервер выпусков.
  • Обновление не должно мешать: прерывать музыку, рвать VPN или требовать нажатий.

Как мы это используем

  • Подписанный список выпусков. В OshaVPN и OshaPlay список версий подписан ключом ECDSA P-256, открытый ключ вшит в приложение. Подменённый список и чужой ключ отвергаются, это закреплено тестами.
  • Тихая установка. Android качает APK под свою архитектуру и ставит его сам при погасшем экране; OshaPlay ставит обновление, когда не играет музыка. На Windows установка идёт при скрытом окне и без ввода пользователя.
  • Только изменения и откат. Windows-клиент скачивает только изменившиеся файлы, а обновляльщик откатывает замену, если она не удалась.
  • Каналы. Есть канал для тестеров и обычный, проверка раз в час, а отказаться от обновлений можно в разделе «Для разработчика».
  • Проверено вживую. С включённым VPN обновление ставится за секунды, и туннель сам поднимается снова.

Самообновление закладываем в приложения в разделе Приложения для Android и Windows.

Типичные проблемы

  • Первая установка всё равно руками. Самообновление работает только после того, как приложение поставили из файла. Для первой установки раздаём универсальный APK и архив Windows со встроенным установщиком.
  • Неудачная замена файлов. Если обновление прервалось на полпути, приложение не должно остаться сломанным: нужен откат к предыдущей версии.
  • Ключ подписи — главный секрет. Кто получил закрытый ключ, тот может выпустить «обновление». Поэтому в приложение вшит только открытый ключ, а подпись списка проверяется при каждой проверке обновлений.
  • Обновление в неудачный момент. Установка посреди музыки или работы раздражает, поэтому ставится только когда приложение не занято.

Когда это не нужно

Если приложение публикуется в RuStore или Google Play, обновления доставляет магазин, и своё самообновление не нужно. Оно оправдано при раздаче файлом: для внутренних и корпоративных приложений и для тестовых сборок.

← Все термины

Нужен сайт, бот или автоматизация?

Термины объяснили — теперь давайте к делу: расскажите о задаче, а мы переведём её на понятный план работ.