Files
umbrix/update-server/TESTING_v1.1.md

231 lines
7.6 KiB
Markdown
Raw Normal View 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` - обновлены комментарии
---
## Текущее состояние
### Сервер
```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 для пользователей
- ✅ Меньше кода для поддержки
**Готово к тестированию! 🚀**