Comment rooter l'émulateur Android (Android 7.1.1 / Nougat)
Je suis heureux d'informer la communauté d'un moyen plus simple de rooter l'émulateur Android (exécuté à partir du SDK Android autonome)
Prérequis :
Remarque: SuperSU est désormais obsolète, mais cette méthode fonctionne toujours pour rooter l'émulateur, et plus de mises à jour seront données pour les nouvelles méthodes d'enracinement.
Instructions
Installez le SuperSu.apk
Installez d'abord l'application SuperSu, faites simplement un glisser-déposer (si vous exécutez la dernière version de l'émulateur ou chargez-le via adb ie adb –e install supersu.apk
)
Après son installation, lorsque vous l'exécutez, il affiche un écran comme indiqué ci-dessous indiquant "Il n'y a pas de binaire SU installé ..". Cette erreur confirme simplement que l'appareil n'est pas encore enraciné.
Rendre la partition système de l'émulateur accessible en écriture
Comme il le suggère, nous devons autoriser l'émulateur à écrire des fichiers système.
Tapez le code suivant pour ce faire: emulator.exe –avd {emulator_name} –writable-system
Remarque: Accédez au dossier d' outils dans lequel le SDK Android est installé et ouvrez l'invite de commande en appuyant sur Maj et en cliquant avec le bouton droit.
Pousser su binaire dans le répertoire système
- Extraire le Recovery flashable.zip (contenant les binaires su de différentes architectures)
Important! Utilisez uniquement le binaire su qui correspond à votre architecture avd, par exemple 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 devez également le remonter. Entrez simplement ces codes
adb root
adb remount
Il est maintenant 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
(peu importe mon emplacement spécifique de binaire su, tout emplacement est correct tant qu'il n'y a pas d'espace blanc)
Si cela échoue, essayez plutôt de pousser vers ce répertoire /system/xbin/su
. Aussi pour les émulateurs exécutant Android 5.1 et inférieurs, utilisez le su
et nonsu.pie
Modifier les autorisations du binaire su
- Faisons ensuite un peu de modification des permissions de su binary. Nous devons le faire dans un émulateur via adb:
adb –e shell
su root
cd /system/bin
chmod 06755 su
Important!! Prendre note du chemin binaire su (le mien est / system / bin)
- Définition de la
install
directive sur su binary et définition d'undaemon
Tapez les codes:
su --install
et pour configurer le démon:
su --daemon&
Important!! Prenez note de l'espacement
Définition de SELinux sur Permissive (c'est-à-dire désactivation de SE Linux)
- Enfin, désactivez selinux via ce code:
setenforce 0
C'est à peu près ça !! Ouvrez l'application SuperSU et il peut demander de mettre à jour les binaires, vous pouvez utiliser la méthode Normal.
Ouvrez n'importe quelle application nécessitant des autorisations SU juste pour revérifier et en effet SuperSU vous demande si vous souhaitez lui accorder des autorisations su.
Remarques
La plupart du contenu en 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é pour créer ce guide après avoir moi-même échoué un nombre incalculable de fois, et aussi après avoir vu la nécessité pour de nombreux utilisateurs de rooter leurs émulateurs aussi. J'espère que cela bénéficiera aussi beaucoup
Irvin H: Enracinement de l'émulateur Android - sur Android Studio 2.3 ((Android 4.4)
Mise à jour
Comme l'a commenté SaAtomic,
Cette approche est toujours viable avec Android Studio 3.0.1
Après la mise à niveau vers la version de l'émulateur 27.2.9
et au-dessus, il est désormais plus facile de conserver la racine grâce à la fonction de capture instantanée (si la copie de la méthode system.img ne fonctionne pas):
Idéalement, cela ressemble plus à l'hibernation du périphérique virtuel avec la configuration intacte, donc tout est préservé.
Instantanés
Vous pouvez maintenant enregistrer plusieurs instantanés AVD pour une configuration de périphérique donnée et choisir lequel des instantanés enregistrés à charger lorsque vous démarrez l'émulateur. Le démarrage d'un périphérique virtuel en chargeant un instantané ressemble beaucoup à la sortie d'un physique d'un état de veille, au lieu de le démarrer à partir d'un état hors tension.
Cela implique que la seule exigence pour démarrer l'émulateur est d'ajouter le -writable-system
paramètre à la -avd [avdname]
commande d' émulateur normale pour démarrer l'émulateur. (L'exécution de l'émulateur uniquement avec l'émulateur -avd [nom_avd] ne lance pas la version / copie enracinée ou peut entraîner une erreur)
Testé au niveau API 22