J'ai toutes les versions du SDK Android (de la 1.5 à la 2.3.3) et j'ai essayé de nombreuses méthodes pour obtenir la racine dans l'émulateur Android. Je n'utilise aucun appareil Android et je teste tout sur l'émulateur (AVD).
Je dois obtenir un accès root dans l'un des émulateurs Android pour utiliser les fonctionnalités "iptables" et "busybox". Et pour utiliser iptables, je dois avoir un accès root. Au moins la commande 'su' doit s'exécuter dans l'émulateur de terminal.
J'ai aussi installé l'application z4root
,
Mais cela prend très longtemps et ne termine pas l'enracinement, et reste bloqué. Certains disent que si nous rétrogradons le système en dessous de RC30, nous pourrons ainsi obtenir un accès root. si cela est vrai, alors comment faire cela? J'utilise les systèmes d'exploitation Linux et Windows.
S'il vous plaît, quelqu'un me dit n'importe quelle méthode pour rooter mon émulateur.
Ces réponses sont toutes inutilement compliquées :)
$ > adb Shell
generic_x86:/ $
generic_x86:/ $ exit
$ > adb root
restarting adbd as root
$ > adb Shell
generic_x86:/ #
Comment rooter un émulateur Android (testé sur Android 7.1.1/Nougat)
Exigences:
Récupération flashable.Zip (contient le binaire su) (Voici alternative de sauvegarde lien fourni par l'utilisateur XDA Ibuprophen pour les fermetures à glissière flashable si le lien principal ne fonctionne pas: Communiqués Zip flashable )
Instructions
Installer le SuperSu.apk
Installez l’application SuperSu en premier lieu, faites simplement un glisser-déposer (si vous utilisez la dernière version de l’émulateur ou sideload via adb i.e adb -e install supersu.apk
)
Après l’avoir installé, lors de son exécution, un écran comme indiqué ci-dessous indique «Il n’existe aucun binaire SU installé ..». Cette erreur confirme simplement que le périphérique n'est pas encore enraciné.
Créer une partition système en écriture pour l'émulateur
Comme il est suggéré, nous devons donner à l'émulateur le droit d'écrire des fichiers système.
Tapez le code suivant pour accomplir ceci: emulator.exe -avd {emulator_name} -writable-system
Remarque: accédez au dossier tools où le SDK Android est installé et ouvrez l'invite de commande en appuyant sur la touche Maj et en cliquant avec le bouton droit de la souris.
Pousser su binary dans le répertoire système
Important! Utilisez uniquement le binaire su qui correspond à votre architecture avd, par exemple x86, armez etc., et notez le chemin où vous avez extrait ces binaires.
adb root
adb remount
Il est maintenant temps de pousser le binaire su:
C'est le code que j'ai utilisé avec succès: adb -e Push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(tant pis pour mon emplacement spécifique de binaire su, tout emplacement est correct tant qu'il n'y a pas d'espace blanc))
note: Pour savoir comment bin
ou xbin
faire dans la console avant:> adb Shell
,> ls /system/xbin/su
Si cela échoue, essayez plutôt de pousser ceci vers ce répertoire /system/xbin/su
. De même, pour les émulateurs fonctionnant sous Android 5.1 et versions antérieures, utilisez la variable su
et non su.pie
.
Modifier les permissions du binaire su
adb -e Shell
su root
cd /system/bin
chmod 06755 su
Important !! Prenez note du chemin su binaire (le mien est/system/bin)
install
sur su binary et définition de daemon
Tapez les codes:
su --install
et pour la mise en place du démon:
su --daemon&
Important !! Prenez note de l'espacement
Paramétrer SELinux sur Permissive (c'est-à-dire désactiver SE Linux)
setenforce 0
Ouvrez l'application SuperSU et il peut vous demander de mettre à jour les fichiers binaires, vous pouvez utiliser la méthode normale.
Remarque: Si vous rencontrez des boucles d’amorçage, ne mettez pas à jour les fichiers binaires, utilisez-le tel quel.
C’est à peu près tout ça !!
Ouvrez n'importe quelle application nécessitant des autorisations SU pour vérifier et si SuperSU vous demande si vous souhaitez lui accorder des autorisations su.
Pour que la racine persistante conserve la mise à jour su binaire (à l'aide de la méthode Normal), copiez alors system.img à partir du répertoire temporaire (Users\AppData\Local\Temp\Android Emulator
le fichier est généralement nommé aléatoirement par exemple 1359g.tmp
avec une taille importante) et remplacez le code par défaut system.img
.
Mettre à jour:
J'ai noté qu'il est plus facile d'obtenir une image système temporaire sous Linux que Windows. Vous pouvez essayer d'utiliser une image instantanée.
Avec l'émergence de 27.3.x
de l'émulateur, il est maintenant beaucoup plus facile de conserver la racine grâce à la fonction d'instantané (si la copie de la méthode system.img
ne fonctionne pas):
Idéalement, cela ressemble plus à hibernarig au périphérique virtuel avec une configuration intacte, donc tout est préservé.
Snapshots
Vous pouvez maintenant enregistrer plusieurs instantanés AVD pour un périphérique donné configuration et choisissez les instantanés enregistrés à charger lorsque vous démarrez l'émulateur. Démarrer un périphérique virtuel en chargeant un instantané est un peu comme réveiller un physique d'un état de sommeil, par opposition à un démarrage à partir d'un état éteint.
Cela implique que la seule condition requise pour démarrer l'émulateur consiste à ajouter le paramètre -writable-system
à la commande normale emulator -avd [avdname]
pour démarrer l'émulateur. (Exécuter l'émulateur simplement avec emulator -avd [avdname]
ne lance pas la version/copie enracinée ou peut entraîner une erreur)
Testé sur le niveau 22 de l'API
Voir également l’autre billet: Emulateur Android: comment éviter la boucle de démarrage après l’enracinement? et leurs mises à jour.
Remarques
La plupart des contenus en référence concernaient des versions plus anciennes d'Android, d'où la raison des différentes commandes et des différents chemins que j'ai modifiés.
Remerciements;
Voici la liste des commandes que vous devez exécuter pendant le fonctionnement de l'émulateur. J'ai testé cette solution pour un avd sur Android 2.2:
adb Shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
adb Push su /system/xbin/su
adb Shell chmod 06755 /system
adb Shell chmod 06755 /system/xbin/su
Il suppose que le binaire su est situé dans le répertoire de travail. Vous pouvez trouver su et superutilisateur ici: http://forum.xda-developers.com/showthread.php?t=682828 . Vous devez exécuter ces commandes chaque fois que vous lancez l'émulateur. Vous pouvez écrire un script qui lance l'émulateur et le root.
Pour AVD avec 5.1.1 et 6.0, j'ai utilisé le script suivant dans Windows:
set adb=adb -s emulator-5558
set Arch=x64
set pie=
adb start-server
%adb% root
%adb% remount
rem %adb% Shell mount -o remount,rw /system
%adb% Shell setenforce 0
%adb% install common/Superuser.apk
%adb% Push %Arch%/su%pie% /system/bin/su
%adb% Shell chmod 0755 /system/bin/su
%adb% Push %Arch%/su%pie% /system/xbin/su
%adb% Shell chmod 0755 /system/xbin/su
%adb% Shell su --install
%adb% Shell "su --daemon&"
rem %adb% Shell mount -o remount,ro /system
exit /b
Besoin de UPDATE.Zip de SuperSU. Déballez-les dans n'importe quel dossier. Créer un fichier bat avec le contenu ci-dessus. N'oubliez pas de spécifier l'architecture et le périphérique nécessaires: set adb=adb -s emulator-5558
et set Arch=x64
. Si vous utilisez Android au-dessus ou égal à 5.0, remplacez set pie=
par set pie=.pie
. Exécuter. Vous obtenez une racine temporaire pour l'exécution en cours.
Si vous rencontrez une erreur sur la partition système remount, vous devez démarrer AVD à partir de la ligne de commande. Voir ci-dessous première étape pour Android 7.
Si vous voulez le rendre persistant, mettez à jour le binaire dans SuperSU et stockez system.img à partir du dossier temp en remplacement de system.img par défaut.
Comment convertir la racine temporaire résultante en un permanent
Tout d'abord, cela va à SuperSu. Il offre une mise à niveau binaire. Mettre à jour de manière normale. Reboot rejeter.
Deuxième - pertinent uniquement pour les émulateurs. Le même AVD. La ligne du bas est que les modifications de l'image du système ne seront pas enregistrées. Vous devez les garder pour eux-mêmes.
Il y a déjà des instructions qui varient pour différents émulateurs.
Pour AVD, vous pouvez essayer de trouver un fichier temporaire system.img, enregistrez-le quelque part et utilisez-le lorsque vous démarrez l'émulateur.
Sous Windows, il se trouve dans le %LOCALAPPDATA%\Temp\AndroidEmulator
et porte un nom du type TMP4980.tmp
.
Vous le copiez sur un périphérique avd de dossier (%HOMEPATH%\.Android\avd\%AVD_NAME%.avd\
) et renommé en system.img
.
Maintenant, il sera utilisé au début, au lieu de l’habituel. Vrai si l'image dans le SDK est mise à jour, elle aura l'ancienne.
Dans ce cas, vous devrez supprimer ce system.img
et répéter l'opération lors de sa création.
Manuel plus détaillé en russe: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Pour Android 7, vous devez exécuter des étapes supplémentaires: 1. Besoin d'exécuter l'émulateur manuellement . Aller dans le dossier sdk sdk\tools\lib64\qt\lib
. Exécuter à partir de cet émulateur de dossier avec les options -writable-system -selinux disabled
Comme ceci:
F:\Android\sdk\tools\lib64\qt\lib>F:\Android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
Vous devez redémarrer adbd
à partir de la racine:
adb -s emulator-5554 root
Et remonter le système:
adb -s emulator-5554 remount
Il ne peut être donné qu'une seule fois par émulateur d'exécution. Et toute autre remontée peut casser le mode écriture. Pour cette raison, vous n'avez pas besoin de lancer d'autres commandes avec remount, comme mount -o remount,rw /system
.
Une autre étape reste la même: télécharger le binaire, exécuter le binaire en tant que démon, etc.
Image de AVD Android 7 x86 avec la racine:
Si vous voyez une erreur à propos de PIE lors de l'exécution de su
binary, vous chargez alors dans un binaire incorrect pour l'émulateur. Vous devez télécharger le binaire nommé su.pie
à l'intérieur de l'archive, mais sur l'émulateur, il doit être nommé su
et non pas su.pie
.
Je pense que le moyen le plus simple consiste à créer un alias pour la commande sh
, par exemple.
adb Shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
Testé sur Android Emulator 3.0 et supérieur.
ici mon pack avec tout ce dont vous avez besoin ..__ ou vous pouvez utiliser ce script:
echo on
set device=emulator-5554
set avd_name=
set adb=d:\Poprygun\DevTools\Android\Android-sdk\platform-tools\adb -s %device%
set emulator=d:\Poprygun\DevTools\Android\Android-sdk\emulator\emulator
set Arch=x86
set pie=
echo Close all Android emulators and press any key
pause
start %emulator% -avd Nexus_One_API_25 -verbose -writable-system
echo Wait until Android emulator loading and press any key
pause
%adb% start-server
%adb% root
%adb% remount
%adb% Shell setenforce 0
%adb% install D:\SuperSU\SuperSU.apk
%adb% Push D:\SuperSU\su\%Arch%\su.pie /system/bin/su
%adb% Shell chmod 0755 /system/bin/su
%adb% Push D:\SuperSU\su\%Arch%\su.pie /system/xbin/su
%adb% Shell chmod 0755 /system/xbin/su
%adb% Shell su --install
%adb% Shell "su --daemon&"
pause
exit /b
J'ai essayé plusieurs des suggestions ci-dessus, y compris SuperSU et je ne parvenais pas à les faire fonctionner, mais j'ai trouvé quelque chose de beaucoup plus simple qui a fonctionné pour mes besoins. Dans mon cas, je voulais seulement pouvoir exécuter sqlite à l’invite de commande. J'ai simplement créé un émulateur avec une ancienne version d'Android (Lollipop) et obtenu immédiatement un accès root.
J'ai utilisé une partie de la méthode parmi les solutions ci-dessus; Cependant, ils n'ont pas fonctionné complètement. Sur la dernière version d'Andy, cela a fonctionné pour moi:
Sur Andy (Root Shell) [Pour obtenir, cliquez-droit sur l'icône HandyAndy et sélectionnez Term Shell]
Dans le shell, exécutez ces commandes:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
Ensuite, installez SuperSU et le binaire SU. Cela remplacera le fichier binaire SU que nous venons de créer . (Facultatif) Supprimez SuperSU et installez Superuser par CWM. Installez à nouveau le binaire su . Maintenant, la racine fonctionne!
Essayez une autre façon de résoudre cette question.
Utilisez Genymotion au lieu de l’émulateur Android par défaut. Il est enraciné par défaut. C'est beaucoup plus facile et ressemble plus à un téléphone normal. C'est gratuit pour un usage personnel.
J'ai trouvé cette question parce que je veux installer le framework Xposed sur l'émulateur Android par défaut. Cette installation a besoin de root et de flash avec une récupération personnalisée (par exemple, TWRP), les deux étant difficiles pour l'émulateur Android par défaut. Enfin, j'ai utilisé Genymotion et tout s'est terminé en quelques minutes.
Je viens de remplacer et d'attribuer des attributs de su à ~/Android/Sdk/images-système/Android-22/google_apis/x86/system.img Et maintenant sur Android 5, j'ai toujours la racine, même pour les nouveaux systèmes, il suffit de installer SuperSu.apk
Android 6 is necessary only
adb root
adb Shell
>/system/xbin/su --daemon &
>setenfoce 0
après cela, SuperSu.apk voit la racine. Mais je ne met pas à jour le fichier binaire