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

231 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ✅ Тестирование системы обновлений 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 для пользователей
- ✅ Меньше кода для поддержки
**Готово к тестированию! 🚀**