2009-08-24 12 views
7

Rozwijam wszystkie moje witryny na serwerze OS 10.5.8 z PHP i MySQL, i skonfigurowałem pliki /etc/hosts i httpd.conf, aby wyświetlić moją stronę pod numerem example.dev w dowolnej przeglądarce na tym komputerze.Jak mogę sprawdzić lokalnie obsługiwane projekty za pomocą emulatora Android SDK?

Niedawno zainstalowałem zestaw do programowania Androida, którego chciałbym użyć do opracowania i przetestowania arkuszy stylów przeznaczonych dla mobilnego pakietu Webkit - ale nie mogę uzyskać dostępu do projektów hostowanych lokalnie w przeglądarce Androida.

Ma to sens, ponieważ emuluje cały system operacyjny Android, ale czy istnieje obejście tego problemu? Czy mogę tylko testować projekty, które istnieją gdzieś w rzeczywistym internetowym komputerze, być może w ukrytym katalogu?

Ktoś zasugerował, że mogę edytować plik /etc/resolv.conf, ale nie wiem jak poprawnie sformatować lokalnie gospodarzem domeny w resolv.conf - Próbowałem odmiany czynności, a nic nie działa:

domain example.dev 
nameserver 127.0.0.1 

Albo ...

domain example.dev 
nameserver localhost 

W moim pliku hosts, to jest skonfigurowany tak:

127.0.0.1 localhost example.dev example2.dev [etc] 

Odpowiedz

2

Pracowałem nad podobnym problemem, używając adresu IP komputera w sieci lokalnej.

13

Powinieneś być w stanie użyć adresu IP swojego mac w adresie URL emulatora androida i móc uzyskać dostęp do swoich stron w ten sposób. Oczywiście upewnij się, że Udostępnianie w Internecie jest włączone w obszarze Udostępnianie w Preferencjach systemowych i że twój firewall nie blokuje adresu.

Alternatywnie można użyć adresu IP wirtualnego hosta, którym jest 10.0.2.2. To zawsze będzie mapować do hosta mac podczas uruchamiania emulatora.

Jeśli z jakiegoś powodu nie chcesz używać adresów IP w swoich adresach URL, możesz odwzorować adres IP swojego komputera Mac na dowolnie wybraną nazwę, modyfikując/etc/hosts w swoim emulatorze. Aby to zrobić, musisz najpierw utworzyć system plików do odczytu i zapisu, a następnie dodaj swój adres IP i Mac hosta cokolwiek chcesz/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 

Wtedy dostęp „http://cat-yodeling.local” z poziomu przeglądarki. Powinieneś być gotowy do drogi.

+0

Miałem to samo pytanie i to jest dokładnie taka odpowiedź, której szukałem. Niestety, nie mogę sprawić, żeby działało. Wydaje się, że polecenia działają, ale "cat/etc/hosts" później pokazuje, że nowa linia nie została napisana. Jakieś dalsze myśli? – Spudley

+0

Myślę, że udało mi się ustalić, jaki był mój problem. Opublikuję to jako nową odpowiedź, ponieważ jest zbyt wiele, aby zmieścić się w komentarzu. – Spudley

+0

Chciałbym dostać to tak, aby foo.dev na moim symulatorze trafił localhost: 3000 na moim macu. Ma sens? – Marc

7

Miałem ten sam problem. Rozwiązanie @ emmby brzmiało tak, jak powinno robić dokładnie to, czego potrzebowałem, ale dziwnie to nie działało. Polecenia zostały uruchomione, ale późniejsze sprawdzenie pliku hostów wykazało, że nie było ono aktualizowane.

Ale zrobiłem trochę więcej badań i odkryłem, jaki jest problem.

Głównym problemem, jaki miałem, było to, że system operacyjny emulowanego urządzenia zajmował już 100% dostępnej pamięci, więc zmiany nie zostały zapisane w pliku hosts. Jednak nie podano również żadnego komunikatu o błędzie.

Domyślam się, że przyczyną @emmby nie był ten problem, ponieważ problem różni się w zależności od wersji Androida umieszczonej na emulatorze; niektóre wersje mogą dać ci trochę wolnego miejsca do pracy.

Jeśli masz ten problem, rozwiązaniem jest uruchomienie emulatora z większą ilością pamięci. Można to zrobić z -partition-size argumentem dla komendy emulator, tak:

emulator -partition-size 128 @MyEmulatedDevice 

Następnie można użyć komendy adb -e shell i edytować plik za użytkownika @ emmby odpowiedź.

Jeśli jednak edycja pliku z powłoki jest uciążliwa, adb umożliwia również skopiowanie go z emulatora do systemu hosta, edycję lokalną i ponowne jej skopiowanie. Zajmuje się również remount. Można to zrobić tak:

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

Następnie edytuj w ulubionym edytorze.

Następnie zamontować emulator do trybu odczyt/zapis, a następnie skopiować plik z powrotem:

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

Zauważ, że emulator jest przywrócone do domyślnych stan przy każdym ponownym uruchomieniu, to może być lepszym rozwiązaniem, ponieważ możesz zachować edytowany plik lokalnie, więc nie musisz powtarzać kroku adb pull i edycji za każdym razem; możesz po prostu uruchomić emulator, zrobić remount i push, a będziesz w biznesie.

Nadzieję, że pomaga.

1

Zgodnie z android docs można uzyskać dostęp do systemu 127.0.0.1 IP za pomocą 10.0.2.2 na emulatorze, który jest specjalnym aliasem do interfejsu pętli hosta.

+1

to tak naprawdę 10.0.2.2, a nie 10.0.0.2 – jeremy

+0

tak, moje złe. Edytowano odpowiedź. Dzięki! –

2

Postępuj zgodnie z instrukcjami wyświetlanymi na dwóch poniższych linków:

http://www.codingonstilts.com/2012/04/android-emulator-hosts-file-entry.html (upewnij się, aby zwrócić uwagę na kartach pomiędzy adresem IP i nazwę hosta i nowej linii na końcu pliku) zrobiłem „[ SDKLOCATION]/platform-tools/adb pull/system/etc/hosts WHATEVERHOSTFILENAME "aby najpierw zobaczyć format oryginalnego pliku hosta, a następnie użyć go, aby go przywrócić.

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

pracuje dla mnie - powodzenia !!