15 votes

Rooter un appareil virtuel Android avec Android 7.1.1

J'utilise le SDK Android officiel avec l'émulateur Android pour créer un Android 7.1.1 (x86) virtuel. J'ai besoin de tester un certain nombre de choses, entre autres, certaines applications nécessitent un accès Root à l'appareil.

Maintenant je sais que je peux adb root et j'ai un shell Root, mais cela ne permet pas aux applications que j'installe d'avoir un accès Root.

J'ai fait des recherches sur ce sujet depuis un certain temps et j'ai vu différentes approches. La plupart des réponses ont été postées il y a assez longtemps.

Je trouve assez étrange qu'il n'y ait pas d'option pour activer Root - il s'agit après tout d'un SDK.

Comment Rooter un appareil virtuel Android, fonctionnant sous Android 7.1.1, en permettant aux applications installées d'avoir un accès Root ?

éditer : Je préfère ne pas avoir recours à des émulateurs payants comme Genymotion si possible.

edit2 : Ceci est uniquement pour un usage personnel.

edit3 : Genymotion semble être une solution viable, en tant qu'émulateur alternatif. Comment se fait-il que le SDK/émulateur Android ne propose pas une telle fonctionnalité ?

edit4 : La réponse de xavier_fakerat semble fonctionner parfaitement bien, cependant depuis la version 3.1 d'Android Studio, cela ne semble pas être un rooting permanent. Une fois que l'AVD est redémarré, l'accès au Root disparaît.

13voto

xavier_fakerat Points 9582

Comment Rooter l'émulateur Android (Android 7.1.1/ Nougat)

Je suis heureux d'informer la communauté d'un moyen plus facile de Root Android émulateur (exécuté à partir de standalone Android SDK)

Exigences :

Note : SuperSU est maintenant déprécié, mais cette méthode fonctionne toujours pour Rooter l'émulateur, et d'autres mises à jour seront données pour les nouvelles méthodes de Rooting.

Instructions

  1. Installez le SuperSu.apk
  • Installez d'abord l'application SuperSu, faites simplement un glisser-déposer (si vous utilisez la dernière version de l'émulateur ou un sideload via adb, c'est-à-dire adb -e install supersu.apk )

  • Après l'avoir installé, lorsque vous l'exécutez, il affiche un écran comme indiqué ci-dessous indiquant "There is no SU binary installed ". Cette erreur confirme simplement que l'appareil n'est pas encore enraciné.

enter image description here

  1. Rendre la partition système de l'émulateur accessible en écriture
  • Comme il le suggère, nous devons donner à l'émulateur la permission d'écrire des fichiers système.

  • Tapez le code suivant pour y parvenir : emulator.exe -avd {emulator_name} -writable-system

Note : Naviguez jusqu'au outils dans le dossier où Android SDK est installé et ouvrez l'invite de commande en appuyant sur shift et en faisant un clic droit.

  1. Pousser le binaire su dans le répertoire système
  • Extraire le fichier Recovery flashable.zip (contenant les binaires su des différentes architectures)

Important ! N'utilisez que le binaire su qui correspond à votre architecture avd e.g x86, arm etc , et notez le chemin où vous avez extrait ces binaires.

  • Assurez-vous que vous exécutez adb en tant que Root et que vous avez besoin de remonter. Il suffit d'entrer ces codes

adb root

adb remount

Maintenant il est temps de pousser le binaire su :

Voici le code que j'ai utilisé avec succès : adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su

(ne tenez pas compte de mon emplacement spécifique de su binary, n'importe quel emplacement est acceptable tant qu'il n'y a pas d'espace blanc)

Si cela échoue, essayez de pousser dans ce répertoire à la place. /system/xbin/su . De même, pour les émulateurs fonctionnant sous Android 5.1 et moins, utilisez l'option su et non su.pie

  1. Changer les permissions du binaire su
  • Ensuite, nous allons modifier un peu les permissions de su binary. Nous devons faire cela dans l'émulateur via adb :

    adb -e shell
    su root
    cd /system/bin
    chmod 06755 su

Important ! Prenez note du chemin binaire de su (le mien est /system/bin)

  1. Fixer le install sur le binaire su et définir une directive daemon

Tapez les codes :

su --install

et pour la mise en place du démon :

su --daemon&

Important ! Prenez note de l'espacement

  1. Régler SELinux sur Permissive (c'est-à-dire désactiver SE Linux)
  • Enfin, désactivez Selinux avec ce code :

setenforce 0

C'est à peu près tout ! Ouvrez l'application SuperSU et elle peut vous demander de mettre à jour les binaires, vous pouvez utiliser la méthode normale.

Ouvrez toute application nécessitant des permissions SU juste pour vérifier et effectivement SuperSU vous demande si vous souhaitez lui accorder des permissions su.

enter image description here

Remarques

La plupart du contenu de la référence était pour les anciennes versions d'Android et donc la raison des différentes commandes et chemins que j'ai modifiés.

Remerciements spéciaux ;

Une gratitude particulière à Irvin H, dont le tutoriel m'a inspiré la création de ce guide après avoir moi-même échoué d'innombrables fois, et aussi après avoir vu le besoin de nombreux utilisateurs de Rooter leurs émulateurs aussi. J'espère que cela profitera aussi à beaucoup

Irvin H : Rooting de l'émulateur Android -sur Android Studio 2.3((Android 4.4)

Mise à jour

Comme commenté par SaAtomic,

Cette approche est toujours viable avec Android Studio 3.0.1

Après la mise à jour de la version de l'émulateur 27.2.9 et ci-dessus, il est maintenant beaucoup plus facile de préserver Root grâce à fonction d'instantanéité (si la copie de la méthode system.img ne fonctionne pas) :

Dans l'idéal, il s'agit plutôt d'hiberner le dispositif virtuel avec la configuration intacte, ce qui permet de tout préserver.

Instantanés

Vous pouvez désormais enregistrer plusieurs instantanés AVD pour un dispositif donné. configuration de dispositif donnée et choisir lequel des instantanés enregistrés doit être chargé lorsque vous démarrer l'émulateur. Le démarrage d'un dispositif virtuel en chargeant un snapshot est un snapshot, c'est comme réveiller un dispositif physique à partir d'un état de par opposition au démarrage à partir d'un état hors tension.

Cela implique que la seule exigence pour démarrer l'émulateur est d'ajouter l'option -writable-system à l'émulateur normal -avd [avdname] pour démarrer l'émulateur. (L'exécution de l'émulateur juste avec emulator -avd [avdname] ne lance pas la version/copie enracinée ou peut conduire à une erreur).

Testé au niveau 22 de l'API

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