web-dev-qa-db-de.com

Wie bearbeitet man die Datei/etc/hosts im Android Studio-Emulator in Nougat?

Weiß jemand, wie man die Datei/etc/hosts in einem Android-Studio-Emulator bearbeitet, der in Nougat läuft? Ich werde es bearbeiten, damit ich meinen virtuellen Host auf meinem lokalen Webserver verwenden kann. Ich habe versucht, es über das Terminal mit adb zu bearbeiten, es wird jedoch ein schreibgeschütztes Dateisystem zurückgegeben. Versuchte auch mit chmod, aber es schlägt fehl.

Update: Ich habe auch versucht, Dateien mit adb $ ./Adb -s emulator-5554 zu ziehen und zu verschieben. Push ~/Desktop/hosts/system/etc/hosts

adb: Fehler: '/ Users/Christian/Desktop/hosts' konnte nicht nach '/ system/etc/hosts' kopiert werden: Datei konnte nicht erstellt werden: Schreibgeschütztes Dateisystem

17
BradlyMan

Ich konnte die Datei/etc/hosts bearbeiten, indem ich den Emulator mit -writable-system startete und den Emulator mithilfe von adb remount erneut anhängte. Danach kann die hosts-Datei im Emulator bearbeitet werden. Ich habe versucht, die Datei zu verschieben/zu ersetzen, und es gelang mir. 

4
BradlyMan
1) Android-sdk-macosx/tools/emulator -avd <avdname> -writable-system
2) ./adb root
3) ./adb remount
4) ./adb Push <local>/hosts /etc/hosts

Android-Datei Host kann sein

/etc/hosts <--- This worked for me
/etc/system/hosts
/system/etc/hosts

Prüfen

1) ./adb Shell
2) cat /etc/hosts
3) ping customsite.com
43
P.O.W.

So konnte ich es unter OSX machen. Nachdem ich eine Reihe anderer Anweisungen gelesen hatte, schien nichts für mich zu funktionieren, bis jemand sagte, dass Sie ein sehr enges Fenster haben, um die Datei von der Festplatte auf das emulierte Gerät zu kopieren, oder sie wird wieder schreibgeschützt

  1. Starten Sie Ihren Emulator.
  2. In Ihrem Terminal finden Sie den Ordner "Plattform-Tools" für Ihre Geräte
  3. Bereiten Sie die Hosts-Datei vor, die Sie auf Ihr Gerät kopieren möchten (in meinem Fall lege ich sie auf den Desktop).
  4. Fügen Sie eine Reihe von Befehlen zusammen, um die Datei schnell zu kopieren. ./adb root && ./adb -s emulator-5554 remount && ./adb -s emulator-5554 Push ~/Desktop/hosts /system/etc/hosts 'emulator-5554' ist der Name meines Geräts, das Sie durch Eingabe von ./adb devices finden können.

danach antwortete das Terminal mit 

restarting adbd as root remount succeeded [100%] /system/etc/hosts

sie können sich sehr wohl fühlen, dass die Kopie erfolgreich durch ./adb Shell und dann cat /system/etc/hosts war.

Ich konnte dann über das emulierte Gerät eine Verbindung zu meinen virtuellen Hosts herstellen

Um nur hier vollständig zu sein, sieht meine Hosts-Datei wie folgt aus: 10.0.2.2 my-virtual-Host

Ich hoffe, das hilft jemandem, da ich einige Zeit versuche, das herauszufinden.

10
Mask Ota

Befolgen Sie die folgenden 3 Schritte: 

  1. Starten Sie den Emulator im beschreibbaren Modus: ./emulator -avd <emulator_name> -writable-system
  2. remount: adb remount
  3. Schieben Sie die Hosts-Datei angehängt : adb Push hosts /system/etc/

Hinweis :

  1. Führen Sie mit den obigen Schritten nur einen Emulator-Namen aus
  2. die ausführbare Datei emulator befindet sich in Android-sdk. Für mich war es unter sdk/emulator.
  3. Die angehängte Hosts-Datei löst www.facebook.com in 127.0.0.1 auf und blockiert daher www.facebook.com im Emulator.
3
shailesh mota

Schritt für Schritt

  1. Erstellen Sie die AVD nicht mit einem Google Play-Bild.  
  2. Verwenden Sie zum Beispiel Google APIs Intel x86 Atom System Image
  3. Starten Sie den Emulator mit dem folgenden Befehl…

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

Zum Beispiel:

    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. Root und Remount der AVD wie folgt…

    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.120   ilyasmamun.blogspot.com" >> hosts
    generic_x86:/system/etc # cat hosts
    
    127.0.0.1       localhost
    ::1             ip6-localhost
    192.168.1.120     ilyasmamun.blogspot.com
    generic_x86:/system/etc #
    

Sie können die ADB-Shell zum Bearbeiten der Datei verwenden, indem Sie den Zugriff ändern (schreibgeschützt auf RW).

1
Cyprien Aubry

Versuchen Sie, @ P.O.W zu antworten, 

Stellen Sie sicher, dass nach dem letzten Eintrag der hosts-Datei eine leere Zeile vorhanden ist. Wenn Sie Registerkarten in der hosts-Datei verwenden, ersetzen Sie sie durch Leerzeichen.

adb reboot
0
Sam