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

29 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Вопросы для Соннета — почему телефон получает старый 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 или размеру?