- 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
7.6 KiB
7.6 KiB
✅ Тестирование системы обновлений v1.1
Что было сделано
1. Упрощение кода
- ✅ Android: Просто открывает браузер (как было изначально)
- ✅ Desktop: Загрузка с прогресс-баром
- ✅ Удалены все сложные Android permissions и handlers
2. Удалённый код
- ❌
InstallHandler.kt- файл удалён - ❌
REQUEST_INSTALL_PACKAGESpermission - убран из манифеста - ❌
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 (эмулятор)
-
Откройте приложение Umbrix
-
НЕ заходите в "О программе" → кнопка "Проверить обновления" теперь скрыта для Android
-
Как проверить? Нужно вызвать проверку программно или через debug mode
-
Ожидаемое поведение:
- Обнаружит версию 1.7.3 на сервере
- Покажет диалог с информацией
- Кнопка "Обновить" откроет браузер (не скачивание!)
- URL:
http://10.0.2.2:8000/downloads/android/umbrix-1.7.1.apk
На Desktop (когда соберёте)
-
Windows:
flutter build windows --release # Установщик откроется автоматически после загрузки -
macOS:
flutter build macos --release # .dmg откроется автоматически -
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 (сейчас)
- ✅ Код упрощён и скомпилирован
- ✅ APK установлен на эмулятор
- ⏳ Протестировать на Android → должен открыть браузер
- ⏳ Убедиться, что кнопка "Проверить обновления" скрыта
Short-term (ближайшее время)
- Собрать Windows .exe
- Собрать macOS .dmg
- Собрать Linux .AppImage
- Загрузить файлы в
update-server/downloads/ - Протестировать на реальном Desktop
Long-term (production)
- Опубликовать в Google Play Store
- Удалить Android поддержку из update-server
- Настроить production сервер (не localhost)
- Добавить SSL сертификат
- Настроить CDN для быстрой загрузки
Troubleshooting
Проблема: Кнопка "Проверить обновления" всё ещё видна на Android
Решение: Проверьте PlatformUtils.isDesktop:
// Должно быть:
if (PlatformUtils.isDesktop) // только Desktop
// НЕ должно быть:
if (!Platform.isIOS) // все кроме iOS
Проблема: На Desktop не скачивается файл
Проверьте:
- Интернет соединение
- URL в
latest.jsonправильный - Файл существует на сервере
- CORS настройки в
api.php
Проблема: Прогресс-бар не движется
Проверьте:
- Сервер возвращает
Content-Lengthheader dioверсия ^5.4.1onReceiveProgresscallback работает
Файлы для проверки
# Код приложения
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 для пользователей
- ✅ Меньше кода для поддержки
Готово к тестированию! 🚀