3 votes

La modification du fichier hosts dans Android studio a perturbé mon émulateur.

J'ai dû modifier le fichier hosts de mon émulateur afin de me connecter à un environnement de développement local. J'ai suivi les étapes suivantes :

Exécutez l'émulateur :

~/Library/Android/sdk/tools/emulator -writable-system -avd Nexus_5_API_19

Dans une autre invite de terminal/cmd :

adb reboot

adb root

adb -s emulator-5554 remount

adb -s emulator-5554 pull /system/etc/hosts hosts

add the IP to host file

adb -s emulator-5554 push hosts /system/etc/hosts

adb reboot

Maintenant, chaque fois que j'essaie de lancer mon émulateur depuis AVD Manager, il ne répond pas. Je dois toujours le démarrer avec :

 ~/Library/Android/sdk/tools/emulator -writable-system -avd Nexus_5_API_19

Je précise que je travaille à partir de High Sierra.

Mention : J'ai essayé avec adb pour faire mon émulateur rw mais il ne m'a pas permis de pousser mon fichier hosts.

1voto

Gugelhupf Points 111

Il existe un autre moyen de manipuler le fichier /etc/hosts (Vous avez besoin d'un fichier Linux machine )

Utilisez le system.img qui vient de Google.

allez à l'accueil de votre Android SDK

  1. cd $ANDROID_HOME

trouver le bon system.img pour votre émulateur

  1. sudo mount -w system-images/Android-25/google_apis/x86_64/system.img

modifier le fichier /etc/hosts

  1. sudo vi /mnt/etc/hosts
  2. sudo umount /mnt

Créer un émulateur (à partir d'Android Studio)

  1. Responsable ASD
  2. "Créer un dispositif virtuel"
  3. Nexus 5X
  4. Suivant
  5. Images de l'onglet x86
  6. Nougart - 25 - x86_64
  7. Suivant
  8. "Nom de l'AVD" : "Nexus 5X API 25 avec hôtes WLAN".
  9. Finition

J'ai pris cette voie parce que emulateur -writable-system -avd xx n'a pas fonctionné dans mon environnement. De même, le montage du system.img dans mon répertoire ~/.Android/avd/xxxx ne fonctionne plus.

1voto

Nick Canzoneri Points 1574

Pas à pas

  1. Ne créez pas l'AVD avec Image Google Play.

  2. Utilisez par exemple Google APIs Intel x86 Atom System Image .

  3. Démarrez l'émulateur avec la commande suivante

    emulator.exe –avd <avd name> -writable-system

Par exemple :

    C:\Users\ilyas.mamun\AppData\Local\Android\Sdk\emulator>emulator.exe -avd Pixel_API_25 -writable-system

    emulator: WARNING: System image is writable
    HAX is working and emulator runs in fast virt mode.
    audio: Failed to create voice `goldfish_audio_in'
    qemu-system-i386.exe: warning: opening audio input failed
    audio: Failed to create voice `adc'
  1. Enraciner et remonter l'AVD comme les suivants

    C:\Users\ilyas.mamun\AppData\Local\Android\Sdk\platform-tools>adb root
    
    C:\Users\ilyas.mamun\AppData\Local\Android\Sdk\platform-tools>adb remount
    remount succeeded
    
    C:\Users\ilyas.mamun\AppData\Local\Android\Sdk\platform-tools>adb shell
    eneric_x86:/ # cd system
    generic_x86:/system # cd etc
    generic_x86:/system/etc # cat hosts
    127.0.0.1       localhost
    ::1             ip6-localhost
    
    generic_x86:/system/etc # echo "192.168.1.181     sandbox.dmoney.com.bd" >> hosts
    generic_x86:/system/etc # cat hosts
    
    127.0.0.1       localhost
    ::1             ip6-localhost
    192.168.1.181     sandbox.dmoney.com.bd
    generic_x86:/system/etc #

0voto

xavier_fakerat Points 9582

La raison pour laquelle vous ne pouvez pas remonter adb en tant que Root est peut-être que vous utilisez une image d'émulateur de production plutôt qu'une image de débogage : ADB Root ne fonctionne pas sur l'émulateur

Pour surmonter cela, essayez d'enraciner votre avd en tant que décrit ici puis installez un éditeur hôte pour modifier facilement le fichier hosts. Essayez de redémarrer comme d'habitude, car vous devez toujours ajouter l'option -writable -system pour que les changements persistent.

Ce problème se produit parce que l'émulateur d'Android studio a été modifié et la partition /system es n'est plus accessible en écriture entre deux redémarrages .

Une solution alternative consistera à remplacer les fichiers originaux dans <sdk_path>/system-images/android-xx/default/x86/system.img .

  • Copiez le system.img : cp /home/a/Android/Sdk/system-images/android-xx/default/x86/system.img ~/.android/avd/[avdname].avd/system-qemu.img

  • Mettez le nouveau system.img en .android/avd/avd name/ . Renommez-le en system-qemu.img Ainsi, l'émulateur utilisera cette nouvelle image au lieu de l'image originale, ce qui n'affectera pas les autres émulateurs.

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