sevenx_engine 0.2.11

Engine de jogos 2D/3D completa com suporte Android, física, áudio, partículas, tilemap, UI, eventos e sistema 3D avançado com PBR.
Documentation
# Script de Instalação Android - SevenX Engine
# Instala APK no dispositivo correto quando há múltiplos dispositivos

Write-Host "📱 SevenX Engine - Instalador Android" -ForegroundColor Cyan
Write-Host "======================================" -ForegroundColor Cyan
Write-Host ""

# Verifica se adb está disponível
if (!(Get-Command adb -ErrorAction SilentlyContinue)) {
    Write-Host "❌ ADB não encontrado!" -ForegroundColor Red
    Write-Host "Instale o Android SDK Platform Tools" -ForegroundColor Yellow
    exit 1
}

# Lista dispositivos conectados
Write-Host "🔍 Procurando dispositivos..." -ForegroundColor Yellow
$devices = adb devices | Select-String -Pattern "^\w+" | Where-Object { $_ -notmatch "List of devices" }

if ($devices.Count -eq 0) {
    Write-Host "❌ Nenhum dispositivo conectado!" -ForegroundColor Red
    Write-Host ""
    Write-Host "Conecte seu dispositivo Android via USB e:" -ForegroundColor Yellow
    Write-Host "1. Ative 'Depuração USB' nas opções de desenvolvedor" -ForegroundColor White
    Write-Host "2. Autorize o computador no dispositivo" -ForegroundColor White
    exit 1
}

Write-Host ""
Write-Host "📱 Dispositivos encontrados:" -ForegroundColor Green
Write-Host ""

$deviceList = @()
$index = 1

foreach ($line in $devices) {
    $parts = $line.ToString().Split("`t")
    if ($parts.Count -ge 2) {
        $deviceId = $parts[0].Trim()
        $status = $parts[1].Trim()
        
        if ($status -eq "device") {
            # Obter informações do dispositivo
            $model = (adb -s $deviceId shell getprop ro.product.model 2>$null).Trim()
            $android = (adb -s $deviceId shell getprop ro.build.version.release 2>$null).Trim()
            
            if (!$model) { $model = "Dispositivo Desconhecido" }
            if (!$android) { $android = "?" }
            
            $deviceInfo = @{
                Index = $index
                Id = $deviceId
                Model = $model
                Android = $android
            }
            
            $deviceList += $deviceInfo
            
            Write-Host "$index. $model" -ForegroundColor White
            Write-Host "   ID: $deviceId" -ForegroundColor Gray
            Write-Host "   Android: $android" -ForegroundColor Gray
            Write-Host ""
            
            $index++
        }
    }
}

if ($deviceList.Count -eq 0) {
    Write-Host "❌ Nenhum dispositivo autorizado encontrado!" -ForegroundColor Red
    Write-Host "Verifique se você autorizou a depuração USB no dispositivo" -ForegroundColor Yellow
    exit 1
}

# Selecionar dispositivo
$selectedDevice = $null

if ($deviceList.Count -eq 1) {
    $selectedDevice = $deviceList[0]
    Write-Host "✅ Usando dispositivo: $($selectedDevice.Model)" -ForegroundColor Green
} else {
    Write-Host "Escolha o dispositivo (1-$($deviceList.Count)):" -ForegroundColor Cyan
    $choice = Read-Host "Digite o número"
    
    $choiceNum = [int]$choice
    if ($choiceNum -lt 1 -or $choiceNum -gt $deviceList.Count) {
        Write-Host "❌ Escolha inválida!" -ForegroundColor Red
        exit 1
    }
    
    $selectedDevice = $deviceList[$choiceNum - 1]
    Write-Host "✅ Dispositivo selecionado: $($selectedDevice.Model)" -ForegroundColor Green
}

Write-Host ""
Write-Host "======================================" -ForegroundColor Cyan

# Verificar APKs disponíveis
Write-Host ""
Write-Host "📦 Procurando APKs..." -ForegroundColor Yellow

# cargo-apk coloca os APKs em target\{debug|release}\apk\examples\
$apkPaths = @(
    "target\release\apk\examples\android_test.apk",
    "target\release\apk\examples\android_complete.apk",
    "target\debug\apk\examples\android_test.apk",
    "target\debug\apk\examples\android_complete.apk"
)

$availableApks = @()
$apkIndex = 1

foreach ($path in $apkPaths) {
    if (Test-Path $path) {
        $fileInfo = Get-Item $path
        $sizeMB = [math]::Round($fileInfo.Length / 1MB, 2)
        
        $buildType = if ($path -match "\\release\\") { "Release" } else { "Debug" }
        
        $apkInfo = @{
            Index = $apkIndex
            Path = $path
            Name = $fileInfo.BaseName
            Size = $sizeMB
            BuildType = $buildType
        }
        
        $availableApks += $apkInfo
        
        Write-Host "$apkIndex. $($apkInfo.Name) [$($apkInfo.BuildType)]" -ForegroundColor White
        Write-Host "   Tamanho: $($apkInfo.Size) MB" -ForegroundColor Gray
        Write-Host "   Path: $path" -ForegroundColor Gray
        Write-Host ""
        
        $apkIndex++
    }
}

if ($availableApks.Count -eq 0) {
    Write-Host "❌ Nenhum APK encontrado!" -ForegroundColor Red
    Write-Host ""
    Write-Host "Execute primeiro:" -ForegroundColor Yellow
    Write-Host "  .\build-android-complete.ps1" -ForegroundColor White
    exit 1
}

# Selecionar APK
$selectedApk = $null

if ($availableApks.Count -eq 1) {
    $selectedApk = $availableApks[0]
    Write-Host "✅ Usando APK: $($selectedApk.Name)" -ForegroundColor Green
} else {
    Write-Host "Escolha o APK (1-$($availableApks.Count)):" -ForegroundColor Cyan
    $choice = Read-Host "Digite o número"
    
    $choiceNum = [int]$choice
    if ($choiceNum -lt 1 -or $choiceNum -gt $availableApks.Count) {
        Write-Host "❌ Escolha inválida!" -ForegroundColor Red
        exit 1
    }
    
    $selectedApk = $availableApks[$choiceNum - 1]
    Write-Host "✅ APK selecionado: $($selectedApk.Name)" -ForegroundColor Green
}

Write-Host ""
Write-Host "======================================" -ForegroundColor Cyan
Write-Host ""

# Verificar se já está instalado
Write-Host "🔍 Verificando instalação existente..." -ForegroundColor Yellow
$packageName = "com.sevenx.engine"
$installed = adb -s $selectedDevice.Id shell pm list packages | Select-String $packageName

if ($installed) {
    Write-Host "⚠️  Aplicativo já instalado" -ForegroundColor Yellow
    Write-Host "Desinstalando versão antiga..." -ForegroundColor Yellow
    adb -s $selectedDevice.Id uninstall $packageName 2>$null
    Start-Sleep -Seconds 1
}

# Instalar APK
Write-Host ""
Write-Host "📲 Instalando APK..." -ForegroundColor Cyan
Write-Host "   Dispositivo: $($selectedDevice.Model)" -ForegroundColor White
Write-Host "   APK: $($selectedApk.Name)" -ForegroundColor White
Write-Host ""

$installResult = adb -s $selectedDevice.Id install -r $selectedApk.Path 2>&1

if ($LASTEXITCODE -eq 0) {
    Write-Host "✅ APK instalado com sucesso!" -ForegroundColor Green
    Write-Host ""
    
    # Tentar iniciar o app
    Write-Host "🚀 Iniciando aplicativo..." -ForegroundColor Cyan
    adb -s $selectedDevice.Id shell am start -n "$packageName/.MainActivity" 2>$null
    
    if ($LASTEXITCODE -eq 0) {
        Write-Host "✅ Aplicativo iniciado!" -ForegroundColor Green
    } else {
        Write-Host "⚠️  Inicie manualmente no dispositivo" -ForegroundColor Yellow
    }
    
    Write-Host ""
    Write-Host "======================================" -ForegroundColor Cyan
    Write-Host ""
    Write-Host "📱 Comandos úteis:" -ForegroundColor Cyan
    Write-Host ""
    Write-Host "Ver logs:" -ForegroundColor White
    Write-Host "  adb -s $($selectedDevice.Id) logcat | Select-String 'SevenX'" -ForegroundColor Yellow
    Write-Host ""
    Write-Host "Desinstalar:" -ForegroundColor White
    Write-Host "  adb -s $($selectedDevice.Id) uninstall $packageName" -ForegroundColor Yellow
    Write-Host ""
    Write-Host "Reiniciar app:" -ForegroundColor White
    Write-Host "  adb -s $($selectedDevice.Id) shell am start -n '$packageName/.MainActivity'" -ForegroundColor Yellow
    Write-Host ""
    
} else {
    Write-Host "❌ Falha na instalação!" -ForegroundColor Red
    Write-Host ""
    Write-Host "Erro:" -ForegroundColor Yellow
    Write-Host $installResult -ForegroundColor Red
    Write-Host ""
    Write-Host "Possíveis soluções:" -ForegroundColor Yellow
    Write-Host "1. Verifique se há espaço suficiente no dispositivo" -ForegroundColor White
    Write-Host "2. Desinstale manualmente versões antigas" -ForegroundColor White
    Write-Host "3. Verifique se a depuração USB está ativa" -ForegroundColor White
    Write-Host "4. Tente reiniciar o dispositivo" -ForegroundColor White
    exit 1
}

Write-Host "✅ Instalação completa!" -ForegroundColor Green