2009-08-24 5 views
7

Я разрабатываю все свои сайты на сервере OS 10.5.8 с PHP и MySQL, и я настроил файлы /etc/hosts и httpd.conf для отображения моего сайта по адресу example.dev в любом браузере на этом компьютере.Как я могу посмотреть локальные проекты с эмулятором Android SDK?

Недавно я установил комплект разработчика программного обеспечения для Android, который я хотел бы использовать для разработки и тестирования таблиц стилей, ориентированных на мобильный Webkit, но я не могу получить доступ к моим локально размещенным проектам в браузере Android.

Это имеет смысл, поскольку это эмуляция всей ОС Android, но есть ли обходной путь? Или я могу проверить только те проекты, которые существуют где-то на самом компьютере в Интернете, возможно, в скрытом каталоге?

Кто-то предложил мне изменить мой /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

Вы должны иметь возможность использовать IP-адрес своего mac в URL-адресе из эмулятора android и иметь доступ к вашим сайтам таким образом. Конечно, убедитесь, что веб-доступ включен в разделе «Совместное использование в системных настройках» и что ваш брандмауэр не блокирует адрес.

В качестве альтернативы вы можете использовать IP-адрес виртуального хоста, который является 10.0.2.2. Это всегда будет отображаться на вашем хост-компьютере при запуске эмулятора.

Если по какой-либо причине вы предпочитаете не использовать IP-адреса в своих URL-адресах, вы можете сопоставить свой IP-адрес вашего Mac с любым именем, которое вы выбрали, изменив/etc/hosts в вашем эмуляторе. Для этого вам необходимо сначала сделать файловую систему для чтения и записи, а затем добавить IP вашего Mac и любой хост, который вы хотите/и т.д./хосты:

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 показалось, что оно должно делать именно то, что мне нужно, но, как ни странно, оно, похоже, не работает. Команды выполнялись, но после этого просмотр файла hosts показал, что он фактически не обновляется.

Но я сделал немного больше исследований, и я решил, в чем проблема.

Основная проблема, с которой я столкнулся, заключалась в том, что операционная система эмулируемого устройства уже занимала 100% доступного хранилища, поэтому изменения не записывались в файл hosts. Однако не было и сообщения об ошибке.

Я предполагаю, что причина @emmby не была связана с этой проблемой, поскольку проблема варьируется в зависимости от версии Android, которую вы надели в эмулятор; некоторые версии могут дать вам некоторое свободное пространство для работы.

Если у вас есть эта проблема, решение этого - запустить эмулятор с большим объемом памяти. Это может быть сделано с помощью -partition-size аргумента для команды emulator, например, так:

emulator -partition-size 128 @MyEmulatedDevice 

Вы можете использовать команду adb -e shell и редактировать файл в соответствии с @ emmby отвечают.

Однако, если редактирование файла из оболочки является болью, adb также дает вам возможность скопировать его с эмулятора на вашу ОС хоста, отредактировать его локально и скопировать обратно. Он также занимается восстановлением. Вы бы сделали это следующим образом:

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 и каждый шаг редактирования; вы можете просто запустить эмулятор, сделайте remount и push, и вы в бизнесе.

Надеюсь, что это поможет.

1

В соответствии с android docs вы можете получить доступ к своей системе 127.0.0.1 IP, используя 10.0.2.2 на вашем эмуляторе, который является специальным псевдонимом для вашего loop loop интерфейса.

+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

Работы для меня - удачи !!