- 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
8.4 KiB
История изменений системы обновлений
Версия 1.1 - Упрощение и Desktop-фокус
Дата: 2024
🎯 Главное изменение
Система обновлений переориентирована только на Desktop платформы (Windows, macOS, Linux).
Android версия использует Google Play Store для автоматических обновлений.
✨ Что изменилось
Код приложения
-
new_version_dialog.dart - Упрощён:
- ✅ Android: Открывает браузер/Google Play
- ✅ Desktop: Скачивание с прогресс-баром + автозапуск установщика
- ❌ Удалены: Android permissions, MethodChannel, InstallHandler
-
about_page.dart:
- Кнопка "Проверить обновления" видна только на Desktop
- Android не показывает кнопку (обновления через Google Play)
-
Android код удалён:
- ❌
InstallHandler.kt- удалён - ❌
REQUEST_INSTALL_PACKAGESpermission - удалён из манифеста - ❌ Регистрация InstallHandler в MainActivity - удалена
- ❌
Документация
-
README.md - Обновлён:
- Добавлено предупреждение о Desktop-only
- Изменена диаграмма процесса обновления
- Добавлены ссылки на Google Play для Android
-
README_DESKTOP.md - Создан:
- Подробная инструкция для Desktop платформ
- Структура файлов (.exe, .dmg, .AppImage)
- Примеры конфигурации
-
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)
if (Platform.isWindows || Platform.isMacOS || Platform.isLinux) {
// 1. Проверка обновлений на сервере
// 2. Показ диалога с информацией о версии
// 3. Скачивание с прогресс-баром (dio)
// 4. Сохранение в temp директорию
// 5. Автоматический запуск установщика (open_file)
}
Android
if (Platform.isAndroid) {
// 1. Проверка обновлений НЕ показывается (кнопка скрыта)
// 2. В production: прямая ссылка на Google Play
// 3. В debug: открытие браузера с download_url
}
🚀 Дальнейшие планы
Production деплой
-
Windows:
- Создание
.exeустановщика - Подпись сертификатом
- Загрузка в
downloads/windows/
- Создание
-
macOS:
- Создание
.dmgобраза - Нотаризация Apple
- Загрузка в
downloads/macos/
- Создание
-
Linux:
- Создание
.AppImage - Добавление
.deb/.rpmпакетов - Загрузка в
downloads/linux/
- Создание
-
Android:
- Публикация в Google Play Store
- Удаление кастомного сервера обновлений
- Автоматические обновления через магазин
💡 Почему так?
Проблема: Android требует сложные разрешения для установки APK из приложения:
- Нужен
REQUEST_INSTALL_PACKAGESpermission - Пользователь должен вручную дать разрешение в настройках
- Это запутывает пользователей и выглядит нелогично
Решение:
- 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
Для разработчиков
-
Обновите код приложения (Flutter):
git pull flutter pub get flutter build apk --debug # для тестирования -
Удалите старый APK с устройства:
adb uninstall com.umbrix.app -
Установите новую версию:
adb install build/app/outputs/flutter-apk/app-debug.apk
Для сервера
Ничего менять не нужно! API осталось совместимым.
Просто обновите документацию:
README.md← основной файлREADME_DESKTOP.md← подробности для Desktop
Для пользователей
Android:
- Обновления теперь через Google Play Store
- Кнопка "Проверить обновления" больше не показывается
Desktop:
- Всё работает как раньше, но с улучшенным UX
- Прогресс-бар при скачивании
- Автоматический запуск установщика
Контрольный список релиза
- Упростить код для Android
- Реализовать скачивание для Desktop с прогресс-баром
- Удалить InstallHandler.kt
- Удалить REQUEST_INSTALL_PACKAGES permission
- Обновить README.md
- Создать README_DESKTOP.md
- Обновить комментарии в api.php
- Протестировать на Android emulator
- Создать Windows .exe установщик
- Создать macOS .dmg образ
- Создать Linux .AppImage
- Опубликовать в Google Play Store
- Production деплой сервера