2009-08-24 5 views
7

Ich entwickle alle meine Sites auf einem OS 10.5.8 Server mit PHP und MySQL, und ich habe meine /etc/hosts und httpd.conf Dateien konfiguriert, um meine Website unter example.dev in jedem Browser auf diesem Rechner anzuzeigen.Wie kann ich lokal gehostete Projekte mit dem Android SDK-Emulator anzeigen?

Ich habe vor Kurzem Androids Software Development Kit installiert, mit dem ich Stylesheets für das mobile Webkit entwickeln und testen kann - aber ich kann nicht auf meine lokal gehosteten Projekte im Android Browser zugreifen.

Dies ist sinnvoll, da es das gesamte Android-Betriebssystem emuliert, aber gibt es eine Problemumgehung? Oder kann ich nur Projekte testen, die irgendwo im Internet des Computers existieren, vielleicht in einem versteckten Verzeichnis?

Jemand schlug vor, dass ich meine /etc/resolv.conf Datei bearbeiten, aber ich weiß nicht, die richtige Art und Weise eine lokal gehostete Domain in der resolv.conf zu formatieren - Ich habe versucht, Variationen der folgenden, und nichts funktioniert:

domain example.dev 
nameserver 127.0.0.1 

Oder ...

domain example.dev 
nameserver localhost 

In meiner hosts-Datei, wird es wie folgt aufgebaut:

127.0.0.1 localhost example.dev example2.dev [etc] 

Antwort

2

Ich arbeitete um ein ähnliches Problem, indem ich die Computer-IP-Adresse im lokalen Netzwerk verwendete.

13

Sie sollten in der Lage sein, die IP-Adresse Ihres Mac in der URL des Android-Emulators zu verwenden und so auf Ihre Websites zugreifen zu können. Stellen Sie sicher, dass das Web Sharing unter Sharing in den Systemeinstellungen aktiviert ist und dass Ihre Firewall die Adresse nicht blockiert.

Alternativ können Sie die IP-Adresse des virtuellen Hosts (10.0.2.2) verwenden. Dies wird beim Ausführen des Emulators immer Ihrem Host-Mac zugeordnet.

Wenn Sie aus irgendeinem Grund keine IP-Adressen in Ihren URLs verwenden möchten, können Sie die IP-Adresse Ihres Mac jedem beliebigen Namen zuordnen, indem Sie/etc/hosts in Ihrem Emulator ändern. Um dies zu tun, müssen Sie zuerst das Dateisystem read-write machen, dann fügen Sie Ihren Mac IP und was Hostnamen Sie wollen/etc/hosts:

adb -e shell 
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system 
# echo '10.0.2.2  cat-yodeling.local' >> /etc/hosts 

Dann zugreifen „http://cat-yodeling.local“ von Ihrem Browser. Du solltest gut gehen.

+0

Ich hatte die gleiche Frage, und das ist genau die Art von Antwort, die ich suchte. Leider kann ich es nicht funktionieren lassen. Die Befehle scheinen zu funktionieren, aber "cat/etc/hosts" zeigt später, dass die neue Zeile nicht geschrieben wurde. Irgendwelche weiteren Gedanken? – Spudley

+0

Ich denke, ich habe herausgefunden, was mein Problem war. Ich poste es als neue Antwort, da es zu viel ist, um in einen Kommentar zu passen. – Spudley

+0

Ich würde es gerne bekommen, so dass foo.dev auf meinem Simulator localhost: 3000 auf meinem Mac schlägt. Sinn ergeben? – Marc

7

Ich hatte das gleiche Problem. @ emmbys Lösung klang so, als sollte sie genau das tun, was ich brauchte, aber seltsamerweise schien es nicht zu funktionieren. Die Befehle liefen, aber wenn man die Hosts-Datei später ansah, zeigte sich, dass sie nicht aktualisiert wurde.

Aber ich habe ein bisschen mehr Forschung, und ich habe herausgefunden, was das Problem war.

Das Kernproblem, das ich hatte, war, dass das Betriebssystem des emulierten Geräts bereits 100% des verfügbaren Speichers einnahm, sodass die Änderungen nicht in die hosts-Datei geschrieben wurden. Es wurde jedoch auch keine Fehlermeldung ausgegeben.

Meine Vermutung ist, dass @bemby dieses Problem nicht hatte, weil das Problem von der Version von Android abhängt, die Sie auf den Emulator setzen; Einige Versionen bieten Ihnen möglicherweise freien Speicherplatz.

Wenn Sie dieses Problem haben, besteht die Lösung darin, den Emulator mit mehr Speicher zu starten.

emulator -partition-size 128 @MyEmulatedDevice 

Sie können dann den adb -e shell Befehl verwenden und die Datei per @ emmby Antwort bearbeiten: Dies kann mit dem -partition-size Argumente für den Befehl emulator, wie dies getan werden.

Wenn Sie jedoch die Datei von der Shell aus bearbeiten, gibt Ihnen adb die Möglichkeit, sie vom Emulator auf Ihr Host-Betriebssystem zu kopieren, lokal zu bearbeiten und dann wieder zu kopieren. Es befasst sich auch mit dem Remount. Sie würden es so tun:

adb pull /system/etc/hosts C:\wherever\you\want\to\save\it 

Dann bearbeiten Sie es in Ihrem Lieblings-Editor.

dann den Emulator wieder montieren/Schreibmodus zu lesen, und kopieren Sie die Datei zurück:

adb remount 
adb push C:\wherever\you\saved\hosts /system/etc/hosts 

Beachten Sie, dass seit der Emulator zurück Zustand auf Standard zurückgesetzt wird, wenn Sie es neu starten, könnte dies eine bessere Lösung, weil Sie die bearbeitete Datei lokal behalten können, so müssen Sie die adb pull und Bearbeitungsschritte nicht jedes Mal wiederholen; Sie können einfach den Emulator starten, tun Sie die remount und push, und Sie sind im Geschäft.

Hoffnung, das hilft.

1

Gemäß android docs können Sie auf Ihr System 127.0.0.1 IP mit 10.0.2.2 auf Ihrem Emulator zugreifen. Dies ist ein spezieller Alias ​​für Ihre Host-Loopback-Schnittstelle.

+1

ist es eigentlich 10.0.2.2, nicht 10.0.0.2 – jeremy

+0

ja mein schlechtes. Bearbeitete die Antwort. Vielen Dank! –

2

Folgen Sie den Anweisungen auf den folgenden beiden Links:

http://www.codingonstilts.com/2012/04/android-emulator-hosts-file-entry.html (stellen Sie sicher, die Aufmerksamkeit auf die Registerkarten, um zwischen der IP-Adresse und den Hostnamen und dem Newline am Ende der Datei zu bezahlen) Ich habe ein „[ SDKLOCATION]/platform-tools/adb pull/system/etc/hosts WHATEVERHOSTFILENAME ", um zuerst das Format der ursprünglichen Hostdatei zu sehen und dann das zurück zu schieben.

Und dann: http://www.codingonstilts.com/2012/06/sync-os-x-hosts-file-to-android.html

Werke für mich - viel Glück !!