66 lines
2.4 KiB
PowerShell
66 lines
2.4 KiB
PowerShell
# Ставит собранный 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"
|