29 lines
2.2 KiB
Markdown
29 lines
2.2 KiB
Markdown
# Вопросы для Соннета — почему телефон получает старый 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 или размеру?
|