228 lines
8.4 KiB
Markdown
228 lines
8.4 KiB
Markdown
|
|
# История изменений системы обновлений
|
|||
|
|
|
|||
|
|
## Версия 1.1 - Упрощение и Desktop-фокус
|
|||
|
|
|
|||
|
|
**Дата:** 2024
|
|||
|
|
|
|||
|
|
### 🎯 Главное изменение
|
|||
|
|
|
|||
|
|
Система обновлений переориентирована **только на Desktop платформы** (Windows, macOS, Linux).
|
|||
|
|
Android версия использует Google Play Store для автоматических обновлений.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### ✨ Что изменилось
|
|||
|
|
|
|||
|
|
#### Код приложения
|
|||
|
|
|
|||
|
|
1. **new_version_dialog.dart** - Упрощён:
|
|||
|
|
- ✅ Android: Открывает браузер/Google Play
|
|||
|
|
- ✅ Desktop: Скачивание с прогресс-баром + автозапуск установщика
|
|||
|
|
- ❌ Удалены: Android permissions, MethodChannel, InstallHandler
|
|||
|
|
|
|||
|
|
2. **about_page.dart**:
|
|||
|
|
- Кнопка "Проверить обновления" видна **только на Desktop**
|
|||
|
|
- Android не показывает кнопку (обновления через Google Play)
|
|||
|
|
|
|||
|
|
3. **Android код удалён**:
|
|||
|
|
- ❌ `InstallHandler.kt` - удалён
|
|||
|
|
- ❌ `REQUEST_INSTALL_PACKAGES` permission - удалён из манифеста
|
|||
|
|
- ❌ Регистрация InstallHandler в MainActivity - удалена
|
|||
|
|
|
|||
|
|
#### Документация
|
|||
|
|
|
|||
|
|
1. **README.md** - Обновлён:
|
|||
|
|
- Добавлено предупреждение о Desktop-only
|
|||
|
|
- Изменена диаграмма процесса обновления
|
|||
|
|
- Добавлены ссылки на Google Play для Android
|
|||
|
|
|
|||
|
|
2. **README_DESKTOP.md** - Создан:
|
|||
|
|
- Подробная инструкция для Desktop платформ
|
|||
|
|
- Структура файлов (.exe, .dmg, .AppImage)
|
|||
|
|
- Примеры конфигурации
|
|||
|
|
|
|||
|
|
3. **api.php** - Обновлён комментарий:
|
|||
|
|
- Указано, что API только для Desktop
|
|||
|
|
- Упомянуто использование Google Play для Android
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 🧹 Что почистили
|
|||
|
|
|
|||
|
|
#### Удалённые файлы
|
|||
|
|
- `android/app/src/main/kotlin/com/umbrix/app/InstallHandler.kt`
|
|||
|
|
|
|||
|
|
#### Удалённые permissions
|
|||
|
|
- `android.permission.REQUEST_INSTALL_PACKAGES` из AndroidManifest.xml
|
|||
|
|
|
|||
|
|
#### Удалённый код
|
|||
|
|
- MethodChannel для проверки Android permissions
|
|||
|
|
- Функции `checkInstallPermission()`, `requestInstallPermission()`
|
|||
|
|
- Сложная логика установки APK из приложения
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 📦 Зависимости
|
|||
|
|
|
|||
|
|
Используемые пакеты **только для Desktop**:
|
|||
|
|
- `dio` ^5.4.1 - HTTP запросы и загрузка файлов
|
|||
|
|
- `path_provider` ^2.1.1 - Временная директория для загрузок
|
|||
|
|
- `open_file` ^3.3.2 - Открытие установщика после загрузки
|
|||
|
|
|
|||
|
|
Android теперь использует только:
|
|||
|
|
- `UriUtils.tryLaunch()` - Открытие браузера/Google Play
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 🔄 Логика работы
|
|||
|
|
|
|||
|
|
#### Desktop (Windows/macOS/Linux)
|
|||
|
|
```dart
|
|||
|
|
if (Platform.isWindows || Platform.isMacOS || Platform.isLinux) {
|
|||
|
|
// 1. Проверка обновлений на сервере
|
|||
|
|
// 2. Показ диалога с информацией о версии
|
|||
|
|
// 3. Скачивание с прогресс-баром (dio)
|
|||
|
|
// 4. Сохранение в temp директорию
|
|||
|
|
// 5. Автоматический запуск установщика (open_file)
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Android
|
|||
|
|
```dart
|
|||
|
|
if (Platform.isAndroid) {
|
|||
|
|
// 1. Проверка обновлений НЕ показывается (кнопка скрыта)
|
|||
|
|
// 2. В production: прямая ссылка на Google Play
|
|||
|
|
// 3. В debug: открытие браузера с download_url
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 🚀 Дальнейшие планы
|
|||
|
|
|
|||
|
|
#### Production деплой
|
|||
|
|
|
|||
|
|
1. **Windows**:
|
|||
|
|
- Создание `.exe` установщика
|
|||
|
|
- Подпись сертификатом
|
|||
|
|
- Загрузка в `downloads/windows/`
|
|||
|
|
|
|||
|
|
2. **macOS**:
|
|||
|
|
- Создание `.dmg` образа
|
|||
|
|
- Нотаризация Apple
|
|||
|
|
- Загрузка в `downloads/macos/`
|
|||
|
|
|
|||
|
|
3. **Linux**:
|
|||
|
|
- Создание `.AppImage`
|
|||
|
|
- Добавление `.deb` / `.rpm` пакетов
|
|||
|
|
- Загрузка в `downloads/linux/`
|
|||
|
|
|
|||
|
|
4. **Android**:
|
|||
|
|
- Публикация в Google Play Store
|
|||
|
|
- Удаление кастомного сервера обновлений
|
|||
|
|
- Автоматические обновления через магазин
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 💡 Почему так?
|
|||
|
|
|
|||
|
|
**Проблема:** Android требует сложные разрешения для установки APK из приложения:
|
|||
|
|
- Нужен `REQUEST_INSTALL_PACKAGES` permission
|
|||
|
|
- Пользователь должен вручную дать разрешение в настройках
|
|||
|
|
- Это запутывает пользователей и выглядит нелогично
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
- Android → Google Play Store (стандартный путь)
|
|||
|
|
- Desktop → Собственный сервер обновлений (гибкость и контроль)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 📝 Заметки разработчика
|
|||
|
|
|
|||
|
|
> "как то нелогично . но мы же его установили уже ... на андроид может и не надо такое обновление на exe надо будет"
|
|||
|
|
|
|||
|
|
Было принято решение упростить систему:
|
|||
|
|
- На Android слишком сложно и нелогично обновлять APK изнутри приложения
|
|||
|
|
- Google Play Store делает это автоматически и безопасно
|
|||
|
|
- Desktop платформам нужна эта функция, так как нет централизованного магазина
|
|||
|
|
- Разделение платформ упрощает код и улучшает UX
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Версия 1.0 - Первый релиз
|
|||
|
|
|
|||
|
|
**Дата:** 2024
|
|||
|
|
|
|||
|
|
- ✅ PHP API для проверки обновлений
|
|||
|
|
- ✅ Web-панель администратора
|
|||
|
|
- ✅ История версий
|
|||
|
|
- ✅ Поддержка beta/stable релизов
|
|||
|
|
- ✅ CORS настройки
|
|||
|
|
- ✅ Rate limiting
|
|||
|
|
- ✅ Логирование запросов
|
|||
|
|
- ✅ Интеграция с Flutter приложением
|
|||
|
|
|
|||
|
|
**Проблемы версии 1.0:**
|
|||
|
|
- Пыталась поддерживать Android с установкой APK
|
|||
|
|
- Требовала сложные Android permissions
|
|||
|
|
- Запутанная UX для пользователей Android
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Миграция с 1.0 на 1.1
|
|||
|
|
|
|||
|
|
### Для разработчиков
|
|||
|
|
|
|||
|
|
1. Обновите код приложения (Flutter):
|
|||
|
|
```bash
|
|||
|
|
git pull
|
|||
|
|
flutter pub get
|
|||
|
|
flutter build apk --debug # для тестирования
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Удалите старый APK с устройства:
|
|||
|
|
```bash
|
|||
|
|
adb uninstall com.umbrix.app
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Установите новую версию:
|
|||
|
|
```bash
|
|||
|
|
adb install build/app/outputs/flutter-apk/app-debug.apk
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Для сервера
|
|||
|
|
|
|||
|
|
Ничего менять не нужно! API осталось совместимым.
|
|||
|
|
Просто обновите документацию:
|
|||
|
|
- `README.md` ← основной файл
|
|||
|
|
- `README_DESKTOP.md` ← подробности для Desktop
|
|||
|
|
|
|||
|
|
### Для пользователей
|
|||
|
|
|
|||
|
|
**Android:**
|
|||
|
|
- Обновления теперь через Google Play Store
|
|||
|
|
- Кнопка "Проверить обновления" больше не показывается
|
|||
|
|
|
|||
|
|
**Desktop:**
|
|||
|
|
- Всё работает как раньше, но с улучшенным UX
|
|||
|
|
- Прогресс-бар при скачивании
|
|||
|
|
- Автоматический запуск установщика
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Контрольный список релиза
|
|||
|
|
|
|||
|
|
- [x] Упростить код для Android
|
|||
|
|
- [x] Реализовать скачивание для Desktop с прогресс-баром
|
|||
|
|
- [x] Удалить InstallHandler.kt
|
|||
|
|
- [x] Удалить REQUEST_INSTALL_PACKAGES permission
|
|||
|
|
- [x] Обновить README.md
|
|||
|
|
- [x] Создать README_DESKTOP.md
|
|||
|
|
- [x] Обновить комментарии в api.php
|
|||
|
|
- [x] Протестировать на Android emulator
|
|||
|
|
- [ ] Создать Windows .exe установщик
|
|||
|
|
- [ ] Создать macOS .dmg образ
|
|||
|
|
- [ ] Создать Linux .AppImage
|
|||
|
|
- [ ] Опубликовать в Google Play Store
|
|||
|
|
- [ ] Production деплой сервера
|