Files
umbrix/update-server/TESTING.md

247 lines
6.3 KiB
Markdown
Raw Permalink Normal View History

# 🎯 Тестирование обновлений в эмуляторе
## Как проверить систему обновлений
### Подготовка (разовая настройка)
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
```
---
**✅ Готово! Теперь вы можете полностью протестировать систему обновлений!**