# 🎯 Тестирование обновлений в эмуляторе ## Как проверить систему обновлений ### Подготовка (разовая настройка) 1. **Запустите эмулятор:** ```bash flutter emulators --launch UmbrixTest ``` 2. **Установите текущую версию:** ```bash flutter run ``` 3. **Настройте тестовый сервер** (выберите один из вариантов): #### Вариант А: Локальный PHP сервер (проще) ```bash # Перейдите в папку с сервером cd update-server # Запустите встроенный PHP сервер php -S localhost:8000 # Сервер будет доступен по адресу: http://localhost:8000 ``` Затем в `constants.dart` укажите: ```dart static const customUpdateServerUrl = "http://10.0.2.2:8000/api.php"; // 10.0.2.2 - это localhost для Android эмулятора static const useCustomUpdateServer = true; ``` #### Вариант Б: Ngrok (если нужен HTTPS) ```bash # В одном терминале запустите PHP cd update-server php -S localhost:8000 # В другом терминале запустите ngrok ngrok http 8000 # Скопируйте HTTPS URL (например: https://abc123.ngrok.io) ``` Затем в `constants.dart`: ```dart static const customUpdateServerUrl = "https://abc123.ngrok.io/api.php"; static const useCustomUpdateServer = true; ``` --- ### Тестирование обновления #### 1. Установите старую версию В `pubspec.yaml` установите версию `2.5.6`: ```yaml version: 2.5.6+256 ``` Пересоберите и установите: ```bash flutter build apk --release flutter install ``` #### 2. Настройте сервер на новую версию Отредактируйте `update-server/latest.json`: ```json { "version": "2.5.7", "build_number": "257", "download_url": "http://10.0.2.2:8000/downloads/umbrix-2.5.7.apk" } ``` #### 3. Создайте APK новой версии Вернитесь к версии `2.5.7` в `pubspec.yaml`: ```yaml version: 2.5.7+257 ``` Соберите APK: ```bash flutter build apk --release ``` Скопируйте APK в папку downloads: ```bash cp build/app/outputs/flutter-apk/app-release.apk \ update-server/downloads/umbrix-2.5.7.apk ``` #### 4. Проверьте обновление 1. Откройте приложение (версия 2.5.6) 2. Зайдите в **Настройки → О программе** 3. Нажмите **"Проверить обновления"** 4. Должно появиться окно с предложением обновиться до 2.5.7 5. Нажмите **"Обновить сейчас"** 6. Скачается и установится новая версия --- ### Отладка #### Проверить API в браузере: ```bash # Если используете локальный сервер curl http://localhost:8000/api.php # Должны увидеть JSON: { "version": "2.5.7", "build_number": "257", ... } ``` #### Проверить из эмулятора: ```bash # Подключитесь к эмулятору через adb adb shell # Проверьте доступность сервера curl http://10.0.2.2:8000/api.php ``` #### Смотреть логи приложения: ```bash adb logcat | grep -i "update\|umbrix" ``` --- ### Частые проблемы **Проблема:** "Не удается подключиться к серверу" **Решение:** - Используйте `10.0.2.2` вместо `localhost` для эмулятора - Проверьте, что PHP сервер запущен - Проверьте firewall --- **Проблема:** "Обновление не отображается" **Решение:** - Убедитесь, что версия в `latest.json` больше текущей - Проверьте `useCustomUpdateServer = true` в `constants.dart` - Пересоберите приложение после изменения констант --- **Проблема:** "Ошибка при скачивании APK" **Решение:** - Проверьте, что файл `umbrix-2.5.7.apk` существует в папке `downloads/` - Проверьте права доступа: `chmod 644 umbrix-2.5.7.apk` - Убедитесь, что URL правильный --- ### Пример полного цикла тестирования ```bash # 1. Запустить PHP сервер cd update-server php -S localhost:8000 & # 2. Изменить версию на старую sed -i 's/version: 2.5.7/version: 2.5.6/' pubspec.yaml # 3. Установить старую версию flutter build apk --release flutter install # 4. Вернуть новую версию sed -i 's/version: 2.5.6/version: 2.5.7/' pubspec.yaml # 5. Собрать новый APK flutter build apk --release cp build/app/outputs/flutter-apk/app-release.apk \ update-server/downloads/umbrix-2.5.7.apk # 6. Проверить API curl http://localhost:8000/api.php # 7. Открыть приложение и проверить обновления ``` --- ### Готовые команды Сохраните в `test_update.sh`: ```bash #!/bin/bash echo "🚀 Тестирование системы обновлений" # Запуск PHP сервера cd update-server php -S localhost:8000 > /dev/null 2>&1 & PHP_PID=$! echo "✅ PHP сервер запущен (PID: $PHP_PID)" # Ждем запуска sleep 2 # Проверка API echo "🔍 Проверка API..." curl -s http://localhost:8000/api.php | jq . echo "" echo "📱 Теперь:" echo "1. Откройте приложение" echo "2. Зайдите в Настройки → О программе" echo "3. Нажмите 'Проверить обновления'" echo "" echo "Для остановки сервера: kill $PHP_PID" ``` Сделайте исполняемым и запустите: ```bash chmod +x test_update.sh ./test_update.sh ``` --- **✅ Готово! Теперь вы можете полностью протестировать систему обновлений!**