Publish IOMATEX Android 5.3.2 build 4433
This commit is contained in:
parent
36789b6b10
commit
237a8bc8f5
|
|
@ -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 должен иметь минимум две независимые зашифрованные резервные копии.
|
||||||
39
README.md
39
README.md
|
|
@ -1,21 +1,40 @@
|
||||||
# Download IOMATEX APP
|
# Download IOMATEX APP
|
||||||
|
|
||||||
Готовые Android-сборки IOMATEX APP для установки вне Google Play.
|
Публичное хранилище production-сборок IOMATEX APP для Android. Скачивание APK
|
||||||
|
не требует регистрации или пароля.
|
||||||
|
|
||||||
## Актуальная версия
|
## Актуальная версия
|
||||||
|
|
||||||
- Версия: `5.3.1+4432`
|
- Версия: `5.3.2+4433`
|
||||||
- Платформа: Android
|
- Платформа: Android
|
||||||
- Архитектура: `arm64-v8a`
|
- Архитектура: universal (`arm64-v8a`, `armeabi-v7a`, `x86_64`)
|
||||||
- Назначение: современные Android-планшеты и телефоны
|
- Подпись: постоянный IOMATEX production certificate
|
||||||
- APK: [скачать IOMATEX 5.3.1+4432](releases/5.3.1-4432/IOMATEX-5.3.1-4432-arm64-v8a.apk)
|
- APK: [скачать IOMATEX 5.3.2+4433](releases/5.3.2-4433/IOMATEX-5.3.2-4433-universal.apk)
|
||||||
- SHA-256: `dfaf921ccd5d17ec8988303b59c3c762ce7761c2b69597c0118939536707f26b`
|
- 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 устанавливать приложения из выбранного
|
Для установки разрешите Android устанавливать приложения из выбранного
|
||||||
браузера или файлового менеджера, скачайте APK и откройте его.
|
браузера или файлового менеджера, скачайте APK и откройте его.
|
||||||
|
|
||||||
`latest.json` содержит машиночитаемую информацию об актуальной сборке и может
|
## Обновления в приложении
|
||||||
использоваться приложением или внешним сервисом для проверки обновлений.
|
|
||||||
|
|
||||||
> Текущая тестовая сборка подписана ключом разработки. Перед массовым
|
Приложение проверяет публичный [`latest.json`](latest.json) при запуске.
|
||||||
> распространением потребуется постоянный production signing key.
|
Если `build_number` больше установленного Android `versionCode`, на иконке
|
||||||
|
Profile появляется красный badge, а на странице Profile — кнопка `Обновить`.
|
||||||
|
Кнопка открывает прямую ссылку на подписанный APK в системном браузере.
|
||||||
|
|
||||||
|
Версия `5.3.2+4433` является первой production-сборкой с механизмом обновлений.
|
||||||
|
Переход со старой debug-подписи требует один раз удалить прежнее приложение и
|
||||||
|
установить эту APK вручную. Последующие production-версии будут обновляться
|
||||||
|
поверх неё без удаления приложения.
|
||||||
|
|
||||||
|
## Разработчикам
|
||||||
|
|
||||||
|
Полный контракт manifest, правила версий, подписи, публикации, проверки и
|
||||||
|
отката описаны в [DEVELOPERS.md](DEVELOPERS.md). Менять `latest.json` без
|
||||||
|
выполнения этого регламента нельзя.
|
||||||
|
|
|
||||||
21
latest.json
21
latest.json
|
|
@ -1,9 +1,18 @@
|
||||||
{
|
{
|
||||||
"version": "5.3.1",
|
"version": "5.3.2",
|
||||||
"build": 4432,
|
"build": 4433,
|
||||||
|
"build_number": 4433,
|
||||||
"platform": "android",
|
"platform": "android",
|
||||||
"architecture": "arm64-v8a",
|
"architecture": "universal",
|
||||||
"file": "releases/5.3.1-4432/IOMATEX-5.3.1-4432-arm64-v8a.apk",
|
"file": "releases/5.3.2-4433/IOMATEX-5.3.2-4433-universal.apk",
|
||||||
"sha256": "dfaf921ccd5d17ec8988303b59c3c762ce7761c2b69597c0118939536707f26b",
|
"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",
|
||||||
"published_at": "2026-09-30T12:32:00+02:00"
|
"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.
Loading…
Reference in New Issue