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