CommunityCodierung & Entwicklunggithub.com

android-emulator

Führe eine Android-App auf dem Handy des Besitzers oder dem Emulator des Projekts aus – Emulator starten und stoppen, Gerät auswählen, bauen, installieren, App öffnen und Screenshots machen.

Was ist android-emulator?

Diese Fähigkeit (Skill) ermöglicht es einem KI-Agenten, eine Android-Anwendung entweder auf einem physischen Gerät (dem Handy des Besitzers) oder auf einem Android-Emulator auszuführen. Sie liest zunächst die projektspezifischen Notizen (`.claude/android-emulator.md`), die den AVD-Namen, die App-ID und Skripte enthalten, um die richtige Umgebung zu konfigurieren. Der Agent priorisiert die Verbindung zum Telefon des Besitzers (per USB oder WLAN) und fällt auf den Emulator zurück, wenn kein Gerät verfügbar ist. Der Emulator wird nur bei Bedarf gestartet und nach Abschluss der Aufgabe heruntergefahren, um Speicher zu sparen. Die Fähigkeit unterstützt das Bauen der APK (mit Android-spezifischen Optimierungen wie `-Pabi`), das Installieren der App mit `adb install -r`, das Öffnen der App und das Erfassen von Screenshots, Logs und UI-Dumps. Sie ist für jede Entwicklungsumgebung geeignet, die mit ADB und dem Android SDK arbeitet (z. B. Claude Code, Cursor, Codex).

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/chencohensolutions/claude-skills/tree/HEAD/plugins/android-emulator/skills/android-emulator

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Android: Telefon oder Emulator

Projektnotizen

Jedes Projekt benennt seinen Emulator und seine App in .claude/android-emulator.md: den AVD-Namen, die App-ID (und die des UI-Lab-Tools, sofern vorhanden) sowie die eigenen Ausführskripte. Lies diese Datei zuerst. Fehlt sie, führe $ANDROID_HOME/emulator/emulator -list-avds aus und wähle den AVD, der nach dem Projekt benannt ist; gibt es keinen, frage den Besitzer und schreibe dann die Notizen.

Tools: sdk="${ANDROID_HOME:-$HOME/Library/Android/sdk}", adb="$sdk/platform-tools/adb". Gradle benötigt ein JDK: JAVA_HOME, sonst Homebrews openjdk@21 (/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home), sonst das mit Android Studio gebündelte (/Applications/Android Studio.app/Contents/jbr/Contents/Home).

Welches Gerät

Das Telefon des Besitzers hat Vorrang: adb devices listet es als eine Seriennummer, die nicht mit emulator- beginnt (USB- oder WLAN-Debugging). Ohne Telefon verwende den Emulator des Projekts. Der Besitzer kann nach einem bestimmten Gerät fragen; DEVICE=phone, DEVICE=emulator oder DEVICE=<seriennummer> gibt die Wahl an die Projekt-Skripte weiter.

Übergib immer -s <seriennummer> an adb, sobald ein Gerät ausgewählt ist, da sich zwischenzeitlich ein anderes verbinden könnte.

Der Emulator

Starte ihn nur, wenn er benötigt wird, und stoppe ihn, wenn die Aufgabe erledigt ist, da er mehrere Gigabyte Arbeitsspeicher belegt. Verwende das projekteigene scripts/emulator.sh, falls vorhanden; ansonsten das dieses Skills (scripts/emulator.sh im Basisverzeichnis des Skills, das beim Laden des Skills angezeigt wird), mit AVD=<name> aus den Notizen:

AVD=<name> <skill-verzeichnis>/scripts/emulator.sh up       # kopflos; wartet, bis Android gestartet ist, gibt die Seriennummer aus
AVD=<name> <skill-verzeichnis>/scripts/emulator.sh status
AVD=<name> <skill-verzeichnis>/scripts/emulator.sh down     # speichert den Quick-Boot-Snapshot, sodass der nächste Start nur Sekunden dauert

up fährt zuerst andere laufende Emulatoren herunter, da Skripte und adb den ersten auswählen (KEEP_OTHERS=1 behält sie); WINDOW=1 zeigt das Fenster an, das der Besitzer sehen möchte. Führe up im Hintergrund aus, wenn der Bau inzwischen fortgesetzt werden kann. Bei einem Fehler befindet sich das Log in ${TMPDIR:-/tmp}/emulator-<avd>.log.

Bauen, installieren, öffnen

Bevorzuge die Projekt-Skripte (die Notizen nennen sie: ein Ausführskript, das UI-Lab-Skript). Manuell ausgeführt:

  1. Baue nur die ABI des Geräts, wenn das Projekt dies unterstützt (-Pabi=$(adb -s <seriennummer> shell getprop ro.product.cpu.abi) oder ABI= für das Projekt-Skript): native Bibliotheken machen eine vollständige APK langsam bei der Übertragung über WLAN-Debugging.
  2. adb -s <seriennummer> install -r <apk>. -r behält die App-Daten; deinstalliere niemals oder führe pm clear auf der App des Besitzers auf seinem Telefon ohne Nachfrage aus, da dort echte Daten gespeichert sind.
  3. Öffne sie mit adb -s <seriennummer> shell am start --user current -S -f 0x10008000 -n <app-id>/<activity>: -S stoppt den alten Prozess, damit die neue Version läuft, --user current wird auf einem Telefon mit einem geschützten Ordner benötigt, und die Flags (neue Aufgabe, alte löschen) verhindern, dass Android einen vorherigen Bildschirm wiederherstellt.

Anschauen

  • Screenshot: adb -s <seriennummer> exec-out screencap -p > <datei>.png, dann die Datei betrachten. Alles schwarz vom Telefon bedeutet, dass es gesperrt ist: Bitte den Besitzer, es zu entsperren.
  • Tippen und Tippen für einen Ablauf: adb -s <seriennummer> shell input tap <x> <y>, input text <text>, input keyevent KEYCODE_BACK; finde Koordinaten mit adb -s <seriennummer> exec-out uiautomator dump /dev/tty.
  • Logs: adb -s <seriennummer> logcat -d --pid=$(adb -s <seriennummer> shell pidof <app-id>) oder -s <tag> für einen Tag. Absturz: adb -s <seriennummer> logcat -d -b crash.
  • Dunkelmodus und Gebietsschema für Randfälle: adb -s <seriennummer> shell cmd uimode night yes|no; ändere das Gebietsschema nur auf dem Emulator, nicht auf dem Telefon des Besitzers.

Teile dem Besitzer mit, von welchem Gerät jedes Ergebnis stammt. Stelle alles, was du auf seinem Telefon geändert hast (z. B. Dunkelmodus), nach Abschluss wieder zurück, und stoppe den Emulator, wenn du ihn gestartet hast.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills