#!/usr/bin/env bash # Rebreak Native — Build debug APK + install on connected Android device. # # Usage: # ./install-android.sh # build + install + launch # ./install-android.sh --no-build # skip Gradle build, just install last APK # ./install-android.sh --no-launch # install but don't auto-launch # # Multi-Device: # ANDROID_SERIAL= ./install-android.sh # # Wireless-ADB (einmalig): # adb pair : # PIN vom Phone-Display eingeben # adb connect : # # Phone-Setup: # Einstellungen → Entwickleroptionen → USB-Debugging an # Beim ersten Connect: "Diesem Computer vertrauen?" → Erlauben set -euo pipefail cd "$(dirname "$0")" PACKAGE="org.rebreak.app" APK="android/app/build/outputs/apk/debug/app-debug.apk" SKIP_BUILD=0 LAUNCH=1 while [[ $# -gt 0 ]]; do case "$1" in --no-build) SKIP_BUILD=1; shift ;; --no-launch) LAUNCH=0; shift ;; -h|--help) awk '/^#!/{next} /^#/{sub(/^# ?/, ""); print; next} {exit}' "$0" exit 0 ;; *) echo "Unbekanntes Flag: $1"; echo " --help für Hilfe"; exit 1 ;; esac done if ! command -v adb >/dev/null 2>&1; then echo "adb nicht im PATH. Android Platform-Tools installieren:" echo " brew install --cask android-platform-tools" exit 1 fi # Lines that end with literal "device" (excludes "unauthorized", "offline", header). DEVICE_LINES=$(adb devices | grep -E '[[:space:]]device$' || true) DEVICE_COUNT=$(printf '%s\n' "$DEVICE_LINES" | grep -c '.' || true) if [[ "$DEVICE_COUNT" -eq 0 ]]; then echo "Kein verfügbares Android-Gerät via ADB." echo "" adb devices echo "" echo "Mögliche Ursachen:" echo " - USB nicht angeschlossen / Kabel nur Strom (nicht Daten)" echo " - USB-Debugging auf dem Phone aus" echo " - 'Diesem Computer vertrauen?' Dialog noch nicht bestätigt → 'unauthorized'" echo " - Wireless-ADB nicht verbunden → adb connect :" exit 1 fi if [[ "$DEVICE_COUNT" -gt 1 && -z "${ANDROID_SERIAL:-}" ]]; then echo "Mehrere Geräte verbunden:" adb devices echo "" echo "Eines auswählen via ANDROID_SERIAL:" echo " ANDROID_SERIAL= $0" exit 1 fi if [[ "$SKIP_BUILD" -eq 0 ]]; then echo "→ Building debug APK (gradlew assembleDebug)..." ( cd android && ./gradlew assembleDebug --console=plain ) fi if [[ ! -f "$APK" ]]; then echo "APK nicht gefunden: $APK" echo " --no-build weglassen oder Build-Fehler oben prüfen." exit 1 fi echo "" echo "→ Installing $APK..." adb install -r -d "$APK" if [[ "$LAUNCH" -eq 1 ]]; then echo "" echo "→ Launching $PACKAGE..." adb shell monkey -p "$PACKAGE" -c android.intent.category.LAUNCHER 1 >/dev/null 2>&1 || { echo "Launch via monkey schlug fehl — App ist installiert, du kannst sie manuell öffnen." } fi echo "" echo "Fertig."