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'abordadb 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)