2009-08-24 2 views
7

PHP와 MySQL을 사용하는 OS 10.5.8 서버에서 모든 사이트를 개발하고 해당 컴퓨터의 모든 브라우저에서 example.dev에 내 사이트를 표시하도록 /etc/hostshttpd.conf 파일을 구성했습니다.Android SDK 에뮬레이터로 로컬 호스팅 프로젝트를 어떻게 볼 수 있습니까?

저는 최근에 모바일 웹킷을 타겟으로 한 스타일 시트를 개발하고 테스트하기 위해 사용하려는 Android의 소프트웨어 개발 키트를 설치했습니다.하지만 Android 브라우저에서 로컬로 호스팅되는 프로젝트에 액세스 할 수 없습니다.

안드로이드 OS 전체를 에뮬레이트하고 있기 때문에 이는 의미가 있지만 해결 방법이 있습니까? 또는 실제 컴퓨터 인터넷 어딘가에 존재하는 프로젝트 (예 : 숨겨진 디렉토리) 만 테스트 할 수 있습니까?

누군가가 내 /etc/resolv.conf 파일을 편집 할 것을 제안하지만, 나는 resolv.conf에서 로컬 호스트 도메인을 포맷 할 수있는 올바른 방법을 알고하지 않습니다 - 나는 다음의 변화를 시도하고, 아무것도 작동 :

domain example.dev 
nameserver 127.0.0.1 

또는 ... 내 호스트 파일에서

domain example.dev 
nameserver localhost 

, 그것은 다음과 같이 설정 :

127.0.0.1 localhost example.dev example2.dev [etc] 

답변

2

로컬 네트워크에서 컴퓨터 IP 주소를 사용하여 유사한 문제를 해결했습니다.

13

안드로이드 에뮬레이터의 URL에서 Mac의 IP 주소를 사용할 수 있어야하며 그런 방식으로 사이트에 액세스 할 수 있어야합니다. 물론 시스템 환경 설정의 공유 아래에서 웹 공유가 켜져 있고 방화벽이 주소를 차단하지 않는지 확인하십시오.

가상 호스트 IP 주소 10.0.2.2를 사용할 수 있습니다. 에뮬레이터를 실행할 때 항상 호스트 mac에 매핑됩니다.

URL에 IP 주소를 사용하지 않으려는 경우 에뮬레이터에서/etc/hosts를 수정하여 Mac의 IP 주소를 원하는 이름으로 매핑 할 수 있습니다. 이렇게하려면 먼저 당신이에/etc/hosts 파일을 원하는 호스트 이름 다음, 파일 시스템 읽기 - 쓰기을 Mac의 IP를 추가해야합니다 :

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

그런 다음 브라우저에서 " http://cat-yodeling.local"를 액세스 할 수 있습니다. 너는 잘 가야한다.

+0

나는 똑같은 질문을 던졌고 이것은 정확히 내가 찾던 답변의 일종이다. 불행히도, 나는 그것을 작동하게 만들 수 없습니다. 명령이 작동하는 것처럼 보이지만, 이후에'cat/etc/hosts'는 새로운 행이 실제로 작성되지 않았 음을 보여줍니다. 더 이상의 생각? – Spudley

+0

내 문제가 무엇인지 알아 냈습니다. 나는 그것을 새로운 답변으로 게시 할 것입니다. 코멘트에 너무 많이 들어가기 때문입니다. – Spudley

+0

내 시뮬레이터에서 foo.dev가 localhost : 3000에 도달하도록 내 Mac에서이 파일을 얻고 싶습니다. 이해가 되니? – Marc

7

나는이 같은 문제를 안고있었습니다. @ emmby의 솔루션은 필자가 필요로하는 것과 똑같은 것처럼 들리지만, 이상하게도 작동하지 않는 것 같습니다. 명령이 실행되었지만 나중에 호스트 파일을 보면 실제로 업데이트되지 않았 음을 알 수 있습니다.

하지만 조금 더 연구를했는데 문제가 무엇인지 알아 냈습니다.

에뮬레이트 된 장치의 운영 체제가 이미 사용 가능한 저장소의 100 %를 차지하고 있었기 때문에 편집 내용이 호스트 파일에 기록되지 않았습니다. 그러나 오류 메시지도 표시되지 않았습니다.

제 생각에 @emmby가이 문제를 갖지 않은 이유는 에뮬레이터에 넣은 Android 버전에 따라 문제가 달라지기 때문입니다. 일부 버전에서는 사용 가능한 여유 공간을 제공 할 수 있습니다.

이 문제가 발생하면 더 많은 저장 공간으로 에뮬레이터를 시작하십시오. 이 때문에처럼 emulator 명령에 대한 -partition-size 인수를 사용하여 수행 할 수 있습니다

emulator -partition-size 128 @MyEmulatedDevice 

그런 다음 adb -e shell 명령을 사용하여 @ emmby의 대답에 따라 파일을 편집 할 수 있습니다.

그러나 쉘에서 파일을 편집하는 것이 어려울 경우 adb은 에뮬레이터에서 호스트 OS로 파일을 복사하고 로컬에서 편집 한 다음 다시 복사 할 수있는 기능을 제공합니다. 또한 재 장전에 대해서도 다룹니다. 다음과 같이하십시오.

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

그런 다음 원하는 편집기에서 편집하십시오. ,

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

주 에뮬레이터 상태를 기본값으로 다시 리셋되기 때문에 다시 시작할 때마다이 더 나은 해결책이 될 수도 :

그런 다음 읽기/쓰기 모드로 에뮬레이터를 다시 마운트하고 파일을 다시 복사 편집 된 파일을 로컬에 보관할 수 있으므로 매번 adb pull 및 편집 단계를 반복하지 않아도됩니다. 당신은 에뮬레이터를 간단하게 시작할 수 있습니다. remountpush을 수행하면 사업을 시작하게됩니다.

희망이 있습니다.

1

android docs에 따라 호스트 루프백 인터페이스의 특수 별칭 인 에뮬레이터에서 10.0.2.2를 사용하는 시스템 127.0.0.1 IP에 액세스 할 수 있습니다.

+1

실제로 10.0.2.2가 아니라 10.0.0.2 – jeremy

+0

예. 답변을 수정했습니다. 감사! –

2

는 다음과 같은 두 개의 링크의 지시에 따라 :

http://www.codingonstilts.com/2012/04/android-emulator-hosts-file-entry.html (파일의 맨 아래에있는 IP 주소와 호스트 이름과 줄 바꿈 사이의 탭에주의를 지불해야합니다) 을 내가했던 "[ SDKLOCATION]/platform-tools/adb pull/system/etc/hosts WHATEVERHOSTFILENAME "을 사용하여 원본 호스트 파일의 형식을 먼저 확인한 다음 다시 사용하십시오.

: 그리고 나를 위해 http://www.codingonstilts.com/2012/06/sync-os-x-hosts-file-to-android.html

작품 - 행운을 빌어 요!

관련 문제