- number-поля теперь рендерятся как text + inputMode=numeric, чтобы браузер не округлял значения через input type=number - пробелы при вставке в number-поля удаляются - бэкенд нормализует значения number-полей в строку перед сохранением - добавлен хелпер normalizeFieldValueForStorage Closes: искажение расчётного счёта и других длинных числовых полей
67 lines
3.2 KiB
Markdown
67 lines
3.2 KiB
Markdown
# iistwin — Android APK (Expo EAS)
|
||
|
||
Мобильное приложение для Android, собранное через Expo EAS облачный сервис.
|
||
Это WebView-обёртка над веб-версией — обновления функционала происходят автоматически при деплое.
|
||
|
||
**Production URL:** `https://iistwin.ru`
|
||
**Expo проект:** https://expo.dev/accounts/iisultanov/projects/iistwin
|
||
|
||
## Настройка EXPO_TOKEN
|
||
|
||
1. Открой https://expo.dev/settings/access-tokens
|
||
2. Нажми **Create token**, скопируй значение (~40 символов латиницы)
|
||
3. В Replit: левая панель → 🔒 **Secrets** → добавь `EXPO_TOKEN` = твой токен
|
||
|
||
## Сборка APK (одна команда)
|
||
|
||
```bash
|
||
cd mobile && npm run build
|
||
```
|
||
|
||
Команда автоматически:
|
||
1. Генерирует keystore и `credentials.json` если их нет
|
||
2. Запускает облачную сборку на серверах Expo (10-20 мин)
|
||
|
||
APK доступен после сборки: https://expo.dev/accounts/iisultanov/projects/iistwin/builds
|
||
|
||
## Установка APK на Android
|
||
|
||
1. Скачай `.apk` с expo.dev → проект → Builds
|
||
2. На Android: **Настройки → Безопасность → Установка из неизвестных источников**
|
||
3. Установи APK
|
||
|
||
## Настройка паролей подписи (опционально)
|
||
|
||
По умолчанию keystore генерируется с паролями по умолчанию.
|
||
Для кастомных паролей добавь секреты в Replit:
|
||
- `ANDROID_KEYSTORE_PASSWORD` — пароль keystore
|
||
- `ANDROID_KEY_PASSWORD` — пароль ключа
|
||
- `ANDROID_KEY_ALIAS` — алиас ключа (по умолчанию: iistwin)
|
||
|
||
## Обновление приложения
|
||
|
||
- **Изменения UI, форм, функционала** — автоматически при деплое, APK переустанавливать не нужно
|
||
- **Изменения нативного кода** (иконка, разрешения) — нужна новая сборка EAS
|
||
|
||
## Безопасность
|
||
|
||
- `mobile/credentials/` и `mobile/credentials.json` в `.gitignore` — не попадают в VCS
|
||
- Файлы создаются динамически через `scripts/setup-android-creds.sh`
|
||
- WebView доступен только для origin: `https://iistwin.ru`
|
||
- Внешние ссылки открываются в браузере устройства
|
||
|
||
## Структура
|
||
|
||
```
|
||
mobile/
|
||
├── App.js # WebView — только production origin, кнопка "назад"
|
||
├── app.json # projectId=18e993b2, owner=iisultanov
|
||
├── eas.json # preview → buildType: apk
|
||
├── credentials.json.example # Шаблон (не коммитится)
|
||
├── package.json # npm run build = setup + EAS
|
||
└── assets/icon.png
|
||
scripts/
|
||
├── setup-android-creds.sh # Генерирует keystore и credentials.json
|
||
└── eas-build.exp # Expect-скрипт для EAS CLI
|
||
```
|