# Ставит собранный debug APK на эмулятор и открывает приложение. # Если виртуалка выключена, запускает первый AVD и ждёт загрузки. # Запуск: powershell -ExecutionPolicy Bypass -File C:\Dev\Benchpress\frontend\scripts\install-emulator.ps1 $ErrorActionPreference = "Stop" $sdk = Join-Path $env:LOCALAPPDATA "Android\Sdk" $adb = Join-Path $sdk "platform-tools\adb.exe" $emulator = Join-Path $sdk "emulator\emulator.exe" $apk = Resolve-Path (Join-Path $PSScriptRoot "..\android\app\build\outputs\apk\debug\app-debug.apk") -ErrorAction SilentlyContinue $package = "com.benchpress.secret" if (-not (Test-Path $adb)) { Write-Error "adb не найден: $adb" } if (-not $apk) { Write-Error "APK ещё нет. Сначала запусти scripts\build-apk.ps1" } function Get-EmulatorSerial { $lines = & $adb devices foreach ($line in $lines) { if ($line -match "^(emulator-\d+)\s+device\s*$") { return $Matches[1] } } return $null } $serial = Get-EmulatorSerial if (-not $serial) { if (-not (Test-Path $emulator)) { Write-Error "Эмулятор не найден: $emulator" } $avds = @(& $emulator -list-avds | Where-Object { $_ -and $_.Trim() }) if ($avds.Count -eq 0) { Write-Error "Нет виртуальных устройств. Создай его в Android Studio: Device Manager." } $avd = $avds[0].Trim() Write-Host "Запуск эмулятора $avd ..." Start-Process -FilePath $emulator -ArgumentList @("-avd", $avd) & $adb wait-for-device $deadline = (Get-Date).AddMinutes(4) do { Start-Sleep -Seconds 2 $serial = Get-EmulatorSerial if (-not $serial) { continue } $boot = (& $adb -s $serial shell getprop sys.boot_completed | Out-String).Trim() if ($boot -eq "1") { break } } while ((Get-Date) -lt $deadline) $serial = Get-EmulatorSerial if (-not $serial) { Write-Error "Эмулятор не успел загрузиться." } } Write-Host "Установка на $serial ..." & $adb -s $serial install -r $apk if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } & $adb -s $serial shell am force-stop $package & $adb -s $serial shell am start -n "$package/.MainActivity" if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } Write-Host "Приложение открыто на $serial"