Files
umbrix/update-server/TESTING_v1.1.md
Umbrix Developer 76a374950f feat: mobile-like window size and always-visible stats
- 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
2026-01-17 13:09:20 +03:00

7.6 KiB
Raw Permalink Blame History

Тестирование системы обновлений 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 - обновлены комментарии

Текущее состояние

Сервер

# Запущен на:
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

Приложение

# Установлено на эмуляторе:
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:

    flutter build windows --release
    # Установщик откроется автоматически после загрузки
    
  2. macOS:

    flutter build macos --release
    # .dmg откроется автоматически
    
  3. Linux:

    flutter build linux --release
    # .AppImage откроется для запуска
    

Ожидаемое поведение для Desktop:

  • Зайти в "О программе" → "Проверить обновления"
  • Обнаружит версию 1.7.3
  • Покажет диалог с прогресс-баром
  • Скачает файл в /tmp/umbrix-1.7.3.exe (или .dmg/.AppImage)
  • Автоматически откроет установщик
  • Пользователь запустит установку вручную

Проверка кода

new_version_dialog.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

// Кнопка видна ТОЛЬКО на 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:

// Должно быть:
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 работает

Файлы для проверки

# Код приложения
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 для пользователей
  • Меньше кода для поддержки

Готово к тестированию! 🚀