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