- Changed window size to mobile phone format (400x800) - Removed width condition for ActiveProxyFooter - now always visible - Added run-umbrix.sh launch script with icon copying - Stats cards now display on all screen sizes
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 деплой сервера
|