Rooter un appareil virtuel Android avec Android 7.1.1

12

J'utilise le SDK Android officiel avec l'émulateur Android pour créer un Android 7.1.1 virtuel (x86). Je dois 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 rootet 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 n'ont pas été publiées il y a assez longtemps.

Je pense qu'il est assez étrange qu'il n'y ait pas d'option pour basculer root - c'est après tout un SDK.

Comment rooter un appareil virtuel Android, exécutant Android 7.1.1, permettant effectivement l'accès root des applications installées?

edit: je préfère ne pas recourir à des émulateurs rémunérés comme Genymotion si possible.

edit2: Ceci est uniquement pour un usage personnel.

edit3: Genymotion semble être une solution viable, comme émulateur alternatif. Comment se fait-il que le SDK / émulateur Android n'offre pas une telle fonctionnalité?

edit4: La réponse de xavier_fakerat semble fonctionner parfaitement bien, mais depuis Android Studio version 3.1, cela ne semble pas être un enracinement permanent. Une fois l'AVD redémarré, l'accès root a disparu.

SaAtomic
la source

Réponses:

11

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

  1. 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é.

entrez la description de l'image ici

  1. 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.

  1. 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 suet nonsu.pie

  1. 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)

  1. Définition de la installdirective 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

  1. 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.

entrez la description de l'image ici

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.9et 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-systemparamè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

xavier_fakerat
la source
1
Merci pour la réponse détaillée. Je ne l'ai pas encore essayé, mais cela semble être une solution viable!
SaAtomic
1
@SaAtomic, vos étapes sont très utiles, plus que jamais, on peut également flasher Supersu 2.82 / Magisk en utilisant une récupération personnalisée, par exemple TWRP, et peut facilement obtenir root .... Cela fonctionne bien sur n'importe quel 7.1.1 ou 7.1.2 appareils en cours d'exécution ... Merci ..
Panchajanya Sarkar
Je viens de le tester avec Android SDK 2.3.3 (AVD Manager) et Pixel virtuel avec Android 7.1.1. Fonctionne comme décrit tout de suite. Je vous remercie!
SaAtomic
1
Mise à jour: Cette approche est toujours viable avec Android Studio 3.0.1
SaAtomic
1
Il est très probable que vous utilisiez une mauvaise image d'émulateur, vous devez utiliser Google APIs Intel x86 Atom System Imageplutôt queGoogle Play Intel x86 Atom System Image
xavier_fakerat