Files
elmer/doc/sonnet-apk-cache-questions-2026-06-28.md
T

2.2 KiB
Raw Blame History

Вопросы для Соннета — почему телефон получает старый APK

Дата: 2026-06-28

Ситуация

Сервер obdai.ru (Ubuntu 24, nginx, 5.172.178.213). APK собран через ./gradlew :raw:clean :raw:assembleDebug, 36/36 tasks fresh. Проверено:

  • aapt dump badging → versionCode=6, versionName=0.2.2-dev ✅
  • curl -sI https://obdai.ru/static/elm-raw-v022.apk → 200 OK, 3726961 bytes ✅
  • Файл переименован: elm-raw-v022.apk (абсолютно новое имя, не могло быть в кеше)
  • Приложение переименовано: app_name = "ELM Relay v2" (strings.xml)
  • Страница обновлена: ссылка на /static/elm-raw-v022.apk, текст "Скачать ELM Relay v2"
  • nginx reload делался, gunicorn рестартовал

НО: пользователь с Android-телефона скачивает и получает v0.1.1-dev. Приложение на рабочем столе называется "ELM Relay v2", но внутри показывает v0.1.1-dev.

Вопросы

  1. Может ли Android (Google Play Protect / Verify Apps) подменять APK при установке на старую версию из кеша?
  2. Может ли nginx кешировать файлы, несмотря на alias? Нужен ли expires -1 или add_header Cache-Control "no-cache"?
  3. Может ли curl и браузер телефона видеть РАЗНЫЕ файлы из-за Cloudflare/CDN/прокси провайдера? Как проверить?
  4. Может ли wget или curl с сервера через внешний IP показать, что отдаётся НЕ тот файл?
  5. Может ли Android Download Manager кешировать по имени пакета (ru.elmer.raw), а не по URL?
  6. Какие ещё механизмы кеширования APK существуют на стороне Android, которые мы не учли?
  7. Как ПРОВЕРИТЬ на сервере, что по HTTP реально отдаётся правильный файл, а не старый — поMD5 или размеру?