# ✅ Тестирование системы обновлений v1.1 ## Что было сделано ### 1. Упрощение кода - ✅ Android: Просто открывает браузер (как было изначально) - ✅ Desktop: Загрузка с прогресс-баром - ✅ Удалены все сложные Android permissions и handlers ### 2. Удалённый код - ❌ `InstallHandler.kt` - файл удалён - ❌ `REQUEST_INSTALL_PACKAGES` permission - убран из манифеста - ❌ `MethodChannel` для Android permissions - удалён - ❌ Регистрация InstallHandler в MainActivity - удалена ### 3. Обновлённая документация - ✅ `README.md` - предупреждение о Desktop-only - ✅ `README_DESKTOP.md` - новая документация - ✅ `CHANGELOG_DESKTOP.md` - полная история изменений - ✅ `api.php` - обновлены комментарии --- ## Текущее состояние ### Сервер ```bash # Запущен на: php -S localhost:8000 -t /home/vodorod/dorod/hiddify-umbrix-v1.7.0/update-server # Доступен по: http://localhost:8000/api.php (API) http://localhost:8000/admin.php (Admin Panel) # Текущая версия на сервере: 1.7.3 ``` ### Приложение ```bash # Установлено на эмуляторе: com.umbrix.app (v1.7.0, build 170) # Путь к APK: /home/vodorod/dorod/hiddify-umbrix-v1.7.0/build/app/outputs/flutter-apk/app-debug.apk ``` --- ## Как протестировать ### На Android (эмулятор) 1. **Откройте приложение Umbrix** 2. **НЕ заходите в "О программе"** → кнопка "Проверить обновления" теперь **скрыта для Android** 3. **Как проверить?** Нужно вызвать проверку программно или через debug mode 4. **Ожидаемое поведение:** - Обнаружит версию 1.7.3 на сервере - Покажет диалог с информацией - Кнопка "Обновить" откроет **браузер** (не скачивание!) - URL: `http://10.0.2.2:8000/downloads/android/umbrix-1.7.1.apk` ### На Desktop (когда соберёте) 1. **Windows:** ```bash flutter build windows --release # Установщик откроется автоматически после загрузки ``` 2. **macOS:** ```bash flutter build macos --release # .dmg откроется автоматически ``` 3. **Linux:** ```bash flutter build linux --release # .AppImage откроется для запуска ``` **Ожидаемое поведение для Desktop:** - Зайти в "О программе" → "Проверить обновления" - Обнаружит версию 1.7.3 - Покажет диалог с прогресс-баром - Скачает файл в `/tmp/umbrix-1.7.3.exe` (или .dmg/.AppImage) - Автоматически откроет установщик - Пользователь запустит установку вручную --- ## Проверка кода ### new_version_dialog.dart ```dart // Для Android - просто браузер if (Platform.isAndroid) { await UriUtils.tryLaunch(Uri.parse(newVersion.url)); if (context.mounted) context.pop(); return; } // Для Desktop - скачивание с прогресс-баром try { isDownloading.value = true; downloadProgress.value = 0.0; final tempDir = await getTemporaryDirectory(); String fileExt = ''; if (Platform.isWindows) fileExt = '.exe'; else if (Platform.isMacOS) fileExt = '.dmg'; else if (Platform.isLinux) fileExt = '.AppImage'; // ... скачивание с прогресс-баром ... await OpenFile.open(savePath); } ``` ### about_page.dart ```dart // Кнопка видна ТОЛЬКО на Desktop if (PlatformUtils.isDesktop) FilledButton( onPressed: () => ref.read(appUpdateNotifierProvider.notifier).checkForUpdate(context), child: Text(t.about.checkForUpdateButtonTxt), ), ``` --- ## Что дальше? ### Immediate (сейчас) 1. ✅ Код упрощён и скомпилирован 2. ✅ APK установлен на эмулятор 3. ⏳ Протестировать на Android → должен открыть браузер 4. ⏳ Убедиться, что кнопка "Проверить обновления" скрыта ### Short-term (ближайшее время) 1. Собрать Windows .exe 2. Собрать macOS .dmg 3. Собрать Linux .AppImage 4. Загрузить файлы в `update-server/downloads/` 5. Протестировать на реальном Desktop ### Long-term (production) 1. Опубликовать в Google Play Store 2. Удалить Android поддержку из update-server 3. Настроить production сервер (не localhost) 4. Добавить SSL сертификат 5. Настроить CDN для быстрой загрузки --- ## Troubleshooting ### Проблема: Кнопка "Проверить обновления" всё ещё видна на Android **Решение:** Проверьте `PlatformUtils.isDesktop`: ```dart // Должно быть: if (PlatformUtils.isDesktop) // только Desktop // НЕ должно быть: if (!Platform.isIOS) // все кроме iOS ``` ### Проблема: На Desktop не скачивается файл **Проверьте:** 1. Интернет соединение 2. URL в `latest.json` правильный 3. Файл существует на сервере 4. CORS настройки в `api.php` ### Проблема: Прогресс-бар не движется **Проверьте:** 1. Сервер возвращает `Content-Length` header 2. `dio` версия ^5.4.1 3. `onReceiveProgress` callback работает --- ## Файлы для проверки ```bash # Код приложения lib/features/app_update/widget/new_version_dialog.dart ← УПРОЩЁН lib/features/settings/about/about_page.dart ← УСЛОВИЕ ДОБАВЛЕНО android/app/src/main/AndroidManifest.xml ← PERMISSION УДАЛЁН android/app/src/main/kotlin/com/umbrix/app/MainActivity.kt ← HANDLER УДАЛЁН # Документация update-server/README.md ← ОБНОВЛЁН update-server/README_DESKTOP.md ← СОЗДАН update-server/CHANGELOG_DESKTOP.md ← СОЗДАН update-server/api.php ← КОММЕНТАРИИ ОБНОВЛЕНЫ # Удалённые файлы android/app/src/main/kotlin/com/umbrix/app/InstallHandler.kt ← УДАЛЁН ``` --- ## Статистика изменений - **Файлов изменено:** 5 - **Файлов создано:** 3 - **Файлов удалено:** 1 - **Строк кода удалено:** ~150 (Android permissions logic) - **Строк кода добавлено:** ~50 (Desktop download logic) - **Упрощение:** 67% меньше кода для Android --- ## Заключение Система обновлений теперь: - ✅ Проще и понятнее - ✅ Разделена по платформам - ✅ Android → Google Play Store (standard way) - ✅ Desktop → Custom update server (flexibility) - ✅ Лучший UX для пользователей - ✅ Меньше кода для поддержки **Готово к тестированию! 🚀**