Доступ к виртуальному хосту из эмулятора Android - PullRequest
2 голосов
/ 28 февраля 2011

Я разрабатываю простое приложение, которое подключается к веб-сервису, настроенному как виртуальный хост в Apache, поэтому его URL-адрес - myapp.localhost

В моей машине для разработки (Mac OS X) я могу получить к ней доступ, а также из эмулятора iPhone. Но у меня проблемы с эмулятором Android, он просто не может добраться до этого URL, потому что он не использует мой файл / etc / hosts для разрешения доменного имени "myapp.localhost".

Так как я использую Appcelerator Titanium ( appcelerator.com ), я не могу использовать «adb» для добавления собственного файла hosts в эмулятор Android.

Есть ли DNS-сервер или нечто подобное, что я могу установить в своей системе Mac OS X, чтобы перевести этот виртуальный хост в эмулятор Android?

1 Ответ

8 голосов
/ 09 августа 2011

Полагаю, вы в конце концов нашли способ решения проблемы. Тем не менее, я дам возможный ответ тем, кто ищет, борясь с той же проблемой, с которой мы когда-то сталкивались.

Поскольку устройства Android эмулируются, а не имитируются (в отличие от устройств iOS), у них действительно есть свои ядра, файлы конфигурации ... и свои собственные /system/etc/hosts. Но вы можете использовать adb с Titanium. Вам просто нужно быть осторожным. Поскольку Titanium использует пользовательское виртуальное устройство, основанное на tiapp.xml, вам придется запустить приложение хотя бы один раз, прежде чем виртуальное устройство появится в списке устройств.

Если у вас больше, чем на виртуальном устройстве, вам сначала нужно получить имя устройства, сгенерированного Titanium (обычно emulator-XXXX).

adb devices

Затем вы можете смонтировать его и использовать команды adb push и pull, чтобы вывести /system/etc/hosts из системы эмулятора, отредактировать его и отправить обратно. -s emulator-XXXX указывает, на каком устройстве эти команды должны выполняться. Если есть только одно устройство, вы можете пропустить эту опцию. См. adb doc для получения дополнительной информации.

adb -s emulator-XXXX remount
adb -s emulator-XXXX pull /system/etc/hosts /whatever/directory/

Теперь вы можете редактировать /whatever/directory/hosts в своем любимом редакторе и добавить нужный хост. Если вам нужен доступ к интерфейсу localhost вашей машины разработки, 10.0.2.2 - это ссылка на интерфейс обратной связи компьютера. Просто добавьте 10.0.2.2 myapp.localhost к хосту и верните его обратно на виртуальное устройство.

adb -s emulator-XXXX push /whatever/directory/hosts /system/etc/hosts

Перезапустите симулятор с Titanium, и он должен добиться цели!

...