Publish IOMATEX Android 5.3.2 build 4433

This commit is contained in:
Andrei Smaliak 2026-10-02 05:32:52 +02:00
parent 36789b6b10
commit 237a8bc8f5
4 changed files with 160 additions and 16 deletions

116
DEVELOPERS.md Normal file
View File

@ -0,0 +1,116 @@
# IOMATEX Android release guide
Этот репозиторий — публичный канал обновлений Android-приложения. Клиент читает
`latest.json`, сравнивает `build_number` с установленным `versionCode` и
показывает обновление только при строго большем значении.
## Неизменяемые правила
1. Каждая новая версия обязана увеличивать `build_number` в `pubspec.yaml`.
2. Все production APK подписываются только постоянным ключом
`iomatex-release`.
3. Keystore, пароль и `android/key.properties` никогда не добавляются в Git.
4. SHA-1 сертификата APK должен быть
`9C:0B:AA:72:12:C0:B9:84:12:10:CB:13:0A:92:20:89:5D:D8:27:EC`.
5. `latest.json`, APK, SHA-256 и размер обязаны описывать один и тот же файл.
6. Старые release-каталоги не изменяются и не удаляются.
7. Откат выполняется только новой сборкой с большим `build_number`. Уменьшение
номера не предложит пользователям обновление.
## Контракт latest.json
Обязательные для приложения поля:
```json
{
"version": "5.3.2",
"build_number": 4433,
"apk_url": "https://git.it-screen.com/.../IOMATEX.apk",
"sha256": "64 lowercase hex characters",
"size_bytes": 82910903,
"release_notes": {
"en": "English release notes",
"ru": "Русское описание"
}
}
```
Поля `build`, `platform`, `architecture`, `file` и `published_at` сохраняются
для людей и обратной совместимости внешних инструментов.
## Подготовка версии
1. В `IOMATEX_APP/pubspec.yaml` увеличить обе части версии:
```yaml
version: 5.3.3+4434
```
2. Убедиться, что локально существуют игнорируемые Git файлы:
```text
android/app/iomatex-release.jks
android/key.properties
```
3. Запустить анализ и тесты:
```bash
flutter analyze
flutter test
```
4. Собрать production APK:
```bash
flutter build apk --release
```
5. Проверить сертификат APK через Android SDK `apksigner`:
```bash
apksigner verify --verbose --print-certs \
build/app/outputs/flutter-apk/app-release.apk
```
SHA-1 signer должен точно совпасть с production SHA-1 из правил выше.
## Публикация
1. Создать неизменяемый каталог `releases/<version>-<build>/`.
2. Скопировать APK с понятным именем, включающим версию и build.
3. Получить метаданные:
```bash
sha256sum releases/<version>-<build>/IOMATEX-*.apk
stat -c '%s' releases/<version>-<build>/IOMATEX-*.apk
```
4. Обновить все поля `latest.json`, включая абсолютный публичный `apk_url`.
5. Проверить JSON:
```bash
jq . latest.json
```
6. Commit APK и manifest вместе, затем push в `main`. Manifest нельзя
публиковать раньше APK: клиент сразу начнёт показывать новый release.
7. После push проверить публичные ответы:
```bash
curl -fL https://git.it-screen.com/An-J/DOWNLOAD_IOMATEX_APP/raw/branch/main/latest.json
curl -fIL '<apk_url из manifest>'
```
8. Скачать APK по публичной ссылке, повторно проверить SHA-256 и установить на
тестовое устройство поверх предыдущей production-версии.
## CI/CD
Для автоматической сборки хранить keystore как protected file variable, а
пароли — как protected masked variables. Job должен восстановить
`android/app/iomatex-release.jks`, сформировать `android/key.properties`,
собрать APK, проверить signer SHA-1 и только затем публиковать release.
Не запускайте release job из недоверенных веток или pull request. Постоянный
keystore должен иметь минимум две независимые зашифрованные резервные копии.

View File

@ -1,21 +1,40 @@
# Download IOMATEX APP
Готовые Android-сборки IOMATEX APP для установки вне Google Play.
Публичное хранилище production-сборок IOMATEX APP для Android. Скачивание APK
не требует регистрации или пароля.
## Актуальная версия
- Версия: `5.3.1+4432`
- Версия: `5.3.2+4433`
- Платформа: Android
- Архитектура: `arm64-v8a`
- Назначение: современные Android-планшеты и телефоны
- APK: [скачать IOMATEX 5.3.1+4432](releases/5.3.1-4432/IOMATEX-5.3.1-4432-arm64-v8a.apk)
- SHA-256: `dfaf921ccd5d17ec8988303b59c3c762ce7761c2b69597c0118939536707f26b`
- Архитектура: universal (`arm64-v8a`, `armeabi-v7a`, `x86_64`)
- Подпись: постоянный IOMATEX production certificate
- APK: [скачать IOMATEX 5.3.2+4433](releases/5.3.2-4433/IOMATEX-5.3.2-4433-universal.apk)
- SHA-256: `ddfded775c87282668d412e2f5f87f18d03a893f990f29120a26ad79884f50d3`
Прямая публичная ссылка:
```text
https://git.it-screen.com/An-J/DOWNLOAD_IOMATEX_APP/raw/branch/main/releases/5.3.2-4433/IOMATEX-5.3.2-4433-universal.apk
```
Для установки разрешите Android устанавливать приложения из выбранного
браузера или файлового менеджера, скачайте APK и откройте его.
`latest.json` содержит машиночитаемую информацию об актуальной сборке и может
использоваться приложением или внешним сервисом для проверки обновлений.
## Обновления в приложении
> Текущая тестовая сборка подписана ключом разработки. Перед массовым
> распространением потребуется постоянный production signing key.
Приложение проверяет публичный [`latest.json`](latest.json) при запуске.
Если `build_number` больше установленного Android `versionCode`, на иконке
Profile появляется красный badge, а на странице Profile — кнопка `Обновить`.
Кнопка открывает прямую ссылку на подписанный APK в системном браузере.
Версия `5.3.2+4433` является первой production-сборкой с механизмом обновлений.
Переход со старой debug-подписи требует один раз удалить прежнее приложение и
установить эту APK вручную. Последующие production-версии будут обновляться
поверх неё без удаления приложения.
## Разработчикам
Полный контракт manifest, правила версий, подписи, публикации, проверки и
отката описаны в [DEVELOPERS.md](DEVELOPERS.md). Менять `latest.json` без
выполнения этого регламента нельзя.

View File

@ -1,9 +1,18 @@
{
"version": "5.3.1",
"build": 4432,
"version": "5.3.2",
"build": 4433,
"build_number": 4433,
"platform": "android",
"architecture": "arm64-v8a",
"file": "releases/5.3.1-4432/IOMATEX-5.3.1-4432-arm64-v8a.apk",
"sha256": "dfaf921ccd5d17ec8988303b59c3c762ce7761c2b69597c0118939536707f26b",
"published_at": "2026-09-30T12:32:00+02:00"
"architecture": "universal",
"file": "releases/5.3.2-4433/IOMATEX-5.3.2-4433-universal.apk",
"apk_url": "https://git.it-screen.com/An-J/DOWNLOAD_IOMATEX_APP/raw/branch/main/releases/5.3.2-4433/IOMATEX-5.3.2-4433-universal.apk",
"sha256": "ddfded775c87282668d412e2f5f87f18d03a893f990f29120a26ad79884f50d3",
"size_bytes": 82910903,
"published_at": "2026-10-02T05:31:00+02:00",
"release_notes": {
"en": "Production-signed build with Google Sign-In and automatic update notifications.",
"ru": "Production-сборка с Google Auth и автоматическими уведомлениями об обновлениях.",
"pl": "Wersja produkcyjna z logowaniem Google i automatycznymi powiadomieniami o aktualizacjach.",
"hi": "Google Sign-In और स्वचालित अपडेट सूचनाओं के साथ प्रोडक्शन बिल्ड।"
}
}

Binary file not shown.