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
This commit is contained in:
230
update-server/TESTING_v1.1.md
Normal file
230
update-server/TESTING_v1.1.md
Normal file
@@ -0,0 +1,230 @@
|
||||
# ✅ Тестирование системы обновлений 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 для пользователей
|
||||
- ✅ Меньше кода для поддержки
|
||||
|
||||
**Готово к тестированию! 🚀**
|
||||
Reference in New Issue
Block a user