J'ai toutes les versions du SDK Android (de 1.5 à 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 également installé l' z4root
application,
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 pouvons ainsi obtenir un accès root. si cela est vrai, comment faire cela? J'utilise les systèmes d'exploitation Linux et Windows.
S'il vous plaît, quelqu'un me dit une méthode pour rooter mon émulateur.
la source
Réponses:
Ces réponses sont toutes inutilement compliquées :)
la source
adb root
entraîne "adbd ne peut pas s'exécuter en tant que root dans les versions de production". Utilisez-vous un émulateur particulier? Veuillez fournir plus de détails.adb root
donne l'erreuradbd cannot run as root in production builds
, voir stackoverflow.com/a/45668555/1682419 - Vous avez besoin d'une "image système des API Google" plutôt que d'une "image système Google Play".Comment rooter l'émulateur Android (testé sur Android 7.1.1 / Nougat)
Exigences :
SuperSU App (Chainfire) La dernière version 2.82
Recovery flashable.zip (contient su binary)(Voici un lien de sauvegarde alternatif fourni par l'utilisateur XDA Ibuprophen pour les zips flashable si le lien principal ne fonctionne pas: les versions zip flashable )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 sideload via adb ie
adb -e install supersu.apk
)Après l'avoir installé, 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 rooté.
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 accomplir cela:
emulator -avd {emulator_name} -writable-system
Si vous avez plusieurs AVD, vous pouvez obtenir une liste de fichiers avds en utilisant la commande:
emulator -list-avds
Remarque: accédez au dossier des outils où le SDK Android est installé et ouvrez-y l'invite de commande en appuyant sur Maj et en cliquant avec le bouton droit.
Pousser su binaire dans le répertoire système
Important! N'utilisez que le binaire su qui correspond à votre architecture avd par exemple x86, arm etc., et notez le chemin où vous avez extrait ces binaires.
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:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(peu importe mon emplacement spécifique du binaire su, n'importe quel emplacement est correct tant qu'il n'y a pas d'espace blanc)
Remarque: Pour comprendre
bin
ouxbin
faire dans la console avant:>adb shell
,>ls /system/xbin/su
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 les versions antérieures, utilisezsu
et nonsu.pie
Modifier les autorisations du binaire su
adb -e shell su root cd /system/bin chmod 06755 su
Important!! Prenez note du chemin binaire su (le mien est / system / bin)
install
directive sur su binaire et définir 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.-à-d. Désactivation de SE Linux)
setenforce 0
Ouvrez l'application SuperSU et il peut demander de mettre à jour les binaires, vous pouvez utiliser la méthode normale.
Remarque: Si vous rencontrez des boucles de démarrage, ne mettez pas à jour les binaires, utilisez-les simplement tels quels.
C'est à peu près tout !!
Ouvrez n'importe quelle application nécessitant des autorisations SU juste pour vérifier et en fait SuperSU demandez si vous souhaitez lui accorder des autorisations su.
Pour que la racine persiste, mettez à jour le binaire su (en utilisant la méthode normale), copiez alors system.img du répertoire temporaire (
Users\AppData\Local\Temp\Android Emulator
le fichier est généralement nommé aléatoirement, par exemple1359g.tmp
avec une grande taille) et remplacez defaultsystem.img
.Mise à 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.
Mise à jour du 4 août 2018
Avec l'émergence de l'émulateur,
27.3.x
il est désormais beaucoup plus facile de préserver la racine grâce à la fonction de capture instantanée (si la copie de lasystem.img
méthode ne fonctionne pas):Idéalement, cela ressemble plus à une mise en veille prolongée du périphérique virtuel avec une configuration intacte, donc tout est préservé.
Instantanés
Cela implique que la seule exigence pour démarrer l'émulateur est d'ajouter le
-writable-system
paramètre à laemulator -avd [avdname]
commande normale pour démarrer l'émulateur. (L' exécution de l'émulateur uniquement avecemulator -avd [avdname]
ne lance pas la version / copie enracinée ou peut entraîner une erreur )Testé au niveau API 22
Pour les problèmes de bootloop, consultez également l'autre article: Android Emulator: Comment éviter une boucle de démarrage après l'enracinement? et leurs mises à jour.
Remarques
La plupart du contenu en référence concernait les anciennes versions d'Android et donc la raison des différentes commandes et chemins que j'ai modifiés.
Remerciements;
Irvin H: Enracinement de l'émulateur Android - sur Android Studio 2.3 ((Android 4.4)
Échec de l'accès racine d'Android AVD.
la source
su --install && su --daemon&
sur l'émulateur, suivi desetenforce 0
pour obtenir la racine. Connaissez-vous un correctif permanent pour la racine au redémarrage?Voici la liste des commandes que vous devez exécuter pendant que l'émulateur est en cours d'exécution, je teste cette solution pour un avd sur Android 2.2:
Il suppose que le binaire su se trouve dans le répertoire de travail. Vous pouvez trouver su et superuser 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 roote.
la source
-partition-size
option pour spécifier la taille de la partition. Essayez de lancer votre émulateur avectools/emulator -avd MyAndroidVirtualDeviceName -partition-size 256
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
par:adb root
adb remount
Pour AVD avec 5.1.1 et 6.0, j'ai utilisé le script suivant dans Windows:
Besoin de UPDATE.zip de SuperSU. Décompressez-les dans n'importe quel dossier. Créez un fichier chauve-souris 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
etset arch=x64
. Si vous exécutez Android supérieur ou égal à 5,0, passezset pie=
àset pie=.pie
. Exécuter. Vous obtenez une racine temporaire pour l'exécution en cours.Si vous avez une erreur lors du remontage de la partition système, vous devez démarrer AVD à partir de la ligne de commande. Voir ci-dessous la 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 temporaire en remplacement de system.img par défaut.
Comment convertir la racine temporaire résultante en un permanent
Tout d'abord - il va à SuperSu. Il propose une mise à jour binaire. Mettez à jour de la manière normale. Reboot rejette.
Deuxièmement - uniquement pertinent pour les émulateurs. Le même AVD. L'essentiel est que les modifications apportées à l'image système ne seront pas enregistrées. Vous devez les garder pour eux.
Il existe déjà des instructions qui varient selon les émulateurs.
Pour AVD, vous pouvez essayer de trouver un fichier temporaire system.img, l'enregistrer quelque part et l'utiliser lorsque vous démarrez l'émulateur.
Sous Windows, il se trouve dans le
%LOCALAPPDATA%\Temp\AndroidEmulator
et porte un nom similaire àTMP4980.tmp
.Vous le copiez dans un dossier avd device (
%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
) et vous l'avez renommé ensystem.img
.Maintenant, il sera utilisé au début, au lieu de l'habituel. Vrai si l'image du SDK est mise à jour, elle aura l'ancienne.
Dans ce cas, vous devrez le supprimer
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. Accédez au dossier sdk
sdk\tools\lib64\qt\lib
. Exécutez à partir de cet émulateur de dossier avec des options-writable-system -selinux disabled
comme ceci:Vous devez redémarrer à
adbd
partir de la racine:adb -s émulateur-5554 racine
Et remonter le système:
Il ne peut être donné qu'une seule fois par émulateur d'exécution. Et tout autre remontage peut interrompre le mode d'écriture. Pour cette raison, vous n'avez pas besoin d'exécuter 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 et ainsi de suite.
Image d'AVD Android 7 x86 avec root:
Si vous voyez une erreur concernant PIE lors de l'exécution du
su
binaire, alors vous téléchargez sur l'émulateur un mauvais binaire. Vous devez télécharger le binaire nommésu.pie
dans l'archive, mais sur l'émulateur, il doit être nommésu
, nonsu.pie
.la source
update binary in SuperSU and store system.img from temp folder as replace of default system.img.
Je pense que le moyen le plus simple est de créer un alias pour la commande
sh
, par exempleTesté sur Android Emulator 3.0 et supérieur.
la source
mount: '/system' not in /proc/mounts
Voici mon pack avec tout ce dont vous avez besoin. Ou vous pouvez utiliser ce script:
la source
Je viens de remplacer et d'attribuer des attributs pour su à ~ / Android / Sdk / system-images / android-22 / google_apis / x86 / system.img et maintenant sur Android 5, j'ai toujours root même pour les nouveaux systèmes, il suffit d'installer SuperSu. apk
après cela, SuperSu.apk voit root. Mais je ne mets pas à jour le fichier binaire
la source
J'ai utilisé une partie de la méthode des 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 avec le bouton droit sur l'icône HandyAndy et sélectionnez Term Shell]
À l'intérieur du shell, exécutez ces commandes:
Ensuite, installez SuperSU et installez le binaire SU. Cela remplacera le 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!
la source
J'ai essayé plusieurs des suggestions ci-dessus, y compris SuperSU et je n'ai pas pu en faire fonctionner, mais j'ai trouvé quelque chose de beaucoup plus simple qui fonctionnait pour mes besoins. Dans mon cas, je voulais uniquement pouvoir exécuter sqlite à l'invite de commande. J'ai simplement créé un émulateur avec une ancienne version d'Android (Lollipop) et j'ai immédiatement obtenu un accès root.
la source
J'ai trouvé que l'émulateur API 23 x86_64 par défaut est rooté par défaut.
la source