2 votes

Utiliser le shell racine de l'émulateur Android via la ligne de commande

Je veux obtenir un shell root puisque mon adbd plante. Mais l'option -shell ne fonctionne pas. Cependant, j'ai découvert qu'il est possible d'obtenir un shell en utilisant -show-kernel. Mais j'aimerais communiquer avec le shell root via TCP. Il y a aussi un problème ouvert chez Google : https://code.google.com/p/android/issues/detail?id=202760

Lorsque vous démarrez un émulateur Android (SDK 24.4.1) sur Linux en ligne de commande, vous devriez pouvoir obtenir un shell root en utilisant l'option de ligne de commande -shell. Du moins, c'est ce que dit le manuel

Créer une console shell root sur le terminal actuel. Vous pouvez utiliser cette commande même si le démon adb dans le système émulé est corrompu. Appuyer sur Ctrl-C à partir du shell arrête l'émulateur, au lieu du shell

Mais lorsque vous démarrez l'émulateur comme ceci

emulator -netdelay none -netspeed full -avd nougat-x86_64 -gpu off -no-window -shell

Je vois bien la sortie du shell du démarrage de l'émulateur Android, mais je ne peux pas lui envoyer de commandes, par exemple ls.

Aussi, ouvrir un port TCP pour le shell et communiquer via telnet montre le même comportement.

emulator -netdelay none -netspeed full -avd nougat-x86_64 -gpu off -no-window -shell-serial tcp::4444,server,nowait
telnet localhost 4444

Il n'y a pas beaucoup d'informations sur ce sujet sur internet, mais peut-être que quelqu'un a déjà traité de ce sujet.

0 votes

Cela semble également avoir été le sujet sur stackoverflow.com/questions/39374975/…

0 votes

Utilisez adb shell bien sûr. Si je me souviens bien, un émulateur vous donnerait généralement cet shell en tant que root par défaut. Sinon, pour une configuration qui prend en charge l'offre d'un shell root, faites d'abord adb root (plutôt évidemment, cela n'est pas quelque chose qui fonctionne sur un appareil grand public configuré de la manière dont Android a été conçu pour que les appareils grand public soient configurés)

0voto

Parahexen Points 1

À partir de la source Android ligne 698, il semble que l'option -shell soit la même que l'option -logcat, donc je pense que la documentation n'est pas bien décrite et bien sûr l'option -shell ne vous donnera pas un shell racine interactif à partir du port série virtuel. Peut-être que je me trompe, je n'ai testé cela que sur macOS.

Avec un test ultérieur, tout comme le post de ce type, l'option -show-kernel vous permettra en fait d'obtenir le journal du noyau et une console interactive avec accès root.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X