Android : téléphone ou émulateur
Notes du projet
Chaque projet nomme son émulateur et son application dans .claude/android-emulator.md : le nom de l'AVD, l'ID de l'application (et celui du lab UI, s'il y en a un) et les scripts de lancement propres au projet. Lisez-le en premier. Sans cela, exécutez $ANDROID_HOME/emulator/emulator -list-avds et choisissez l'AVD nommé d'après le projet ; s'il n'y en a pas, demandez au propriétaire, puis écrivez les notes.
Outils : sdk="${ANDROID_HOME:-$HOME/Library/Android/sdk}", adb="$sdk/platform-tools/adb". Gradle a besoin d'un JDK : JAVA_HOME, sinon openjdk@21 de Homebrew (/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home), sinon celui fourni avec Android Studio (/Applications/Android Studio.app/Contents/jbr/Contents/Home).
Quel périphérique
Le téléphone du propriétaire est prioritaire : adb devices le liste avec un numéro de série qui ne commence pas par emulator- (USB ou débogage sans fil). Sans téléphone, utilisez l'émulateur du projet. Le propriétaire peut demander l'un ou l'autre ; DEVICE=phone, DEVICE=emulator ou DEVICE=<serial> est la façon dont les scripts du projet prennent ce choix.
Passez toujours -s <serial> à adb une fois un périphérique choisi, car un autre peut se connecter entre-temps.
L'émulateur
Ne le démarrez que lorsque c'est nécessaire et arrêtez-le une fois la tâche terminée, car il occupe plusieurs Go de mémoire. Utilisez le scripts/emulator.sh du projet s'il en a un ; sinon, utilisez celui de cette compétence (dans le répertoire de base de la compétence, affiché lors du chargement de la compétence), avec AVD=<name> depuis les notes :
AVD=<name> <skill dir>/scripts/emulator.sh up # sans interface ; attend que Android ait démarré, affiche le numéro de série
AVD=<name> <skill dir>/scripts/emulator.sh status
AVD=<name> <skill dir>/scripts/emulator.sh down # sauvegarde l'instantané de démarrage rapide, donc le prochain up prend quelques secondes
up arrête d'abord les autres émulateurs en cours d'exécution, car les scripts et adb choisissent le premier (KEEP_OTHERS=1 les conserve) ; WINDOW=1 affiche sa fenêtre, ce que le propriétaire peut vouloir regarder. Lancez up en arrière-plan lorsque la compilation peut continuer entre-temps. En cas d'échec, son journal se trouve dans ${TMPDIR:-/tmp}/emulator-<avd>.log.
Compiler, installer, ouvrir
Privilégiez les scripts du projet (les notes les mentionnent : un script de lancement, le script du lab UI). À faire manuellement :
- Ne compilez que l'ABI du périphérique lorsque le projet le supporte (
-Pabi=$(adb -s <serial> shell getprop ro.product.cpu.abi), ouABI=pour le script du projet) : les bibliothèques natives rendent un APK complet lent à envoyer via le débogage sans fil. adb -s <serial> install -r <apk>.-rconserve les données de l'application ; ne désinstallez jamais ni n'effacez les données (pm clear) de l'application du propriétaire sur son téléphone sans demander, car elles contiennent ses vraies données.- Ouvrez-la avec
adb -s <serial> shell am start --user current -S -f 0x10008000 -n <app id>/<activity>:-Sarrête l'ancien processus pour que la nouvelle compilation s'exécute,--user currentest nécessaire sur un téléphone avec un dossier sécurisé, et les flags (nouvelle tâche, suppression de l'ancienne) empêchent Android de reprendre un écran précédent.
Observer
- Capture d'écran :
adb -s <serial> exec-out screencap -p > <file>.png, puis regardez le fichier. Un écran tout noir depuis le téléphone signifie qu'il est verrouillé : demandez au propriétaire de le déverrouiller. - Appuyer et taper pour un flux :
adb -s <serial> shell input tap <x> <y>,input text <texte>,input keyevent KEYCODE_BACK; trouvez les coordonnées avecadb -s <serial> exec-out uiautomator dump /dev/tty. - Journaux :
adb -s <serial> logcat -d --pid=$(adb -s <serial> shell pidof <app id>), ou-s <tag>pour une balise. Plantage :adb -s <serial> logcat -d -b crash. - Mode sombre et langue pour les cas limites :
adb -s <serial> shell cmd uimode night yes|no; changez la langue uniquement sur l'émulateur, pas sur le téléphone du propriétaire.
Indiquez au propriétaire de quel périphérique provient chaque résultat. Remettez en place tout ce que vous avez modifié sur son téléphone (mode sombre, par exemple) une fois terminé, et arrêtez l'émulateur si vous l'avez démarré.