Как стать автором
Обновить

Android Emulator и локальный веб-сервер (Denwer)

Время на прочтение2 мин
Количество просмотров20K
imageЯ продолжу делиться некоторыми кейсами разработки под Android и теперь хочу рассказать о том, как просто заставить работать приложение, запущенное в эмуляторе, с вашим же серверным API, которое лежит на локальном веб-сервере. Простыми словами — как общаться приложению из эмулятора по http с localhost. Это не советы профессионала, а не более чем пример конкретного рабочего решения.

Начну с условий задачи. Моему приложению, которое я описывал в прошлый раз, понадобилась возможность публикации рисунков в телефона в онлайн-галерею. В моем случае галерея — это свой собственный сайт, который в POST-запросе получает изображение и некоторые текстовые переменные. На windows-машине для эмуляции веб-сервера запущен Denwer, доступ к проекту галереи по http организован по урлу _http://dev.gallery.
И так, проблема состоит в том, что эмулятор не видит ваш собственный hosts с описаниями хостов и, соответственно, не знает про _http://dev.gallery. Попытки разместить проект в localhost/dev.gallery тоже ни к чему не приводят, поскольку 127.0.0.1 для эмулятора — это он сам. Проблема решается внесением изменений в hosts эмулятора. А конкретно — строки 10.0.2.2 dev.gallery. Именно этот адрес нужно использовать, если вы хотите обращаться к сервисам, размещенным на вашей машине. Полный список адресов адресного пространства есть здесь.
Для того чтобы внести соответствующие изменения:
  • Запускаем руками эмулятор командой emulator -avd ИмяУстройства -partition-size 128
  • В новом окне консоли выполняем adb remount
  • Копируем hosts с устройства в корень диска adb pull /system/etc/hosts c:\hosts
  • Открываем полученный файл текстовым редактором и вносим нужные правки. К слову, если нужно дать доступ ко всей папке localhost — можно сменить адрес в строке 127.0.0.1 localhost (скорее всего это будет единственная строка данных в файле) на 10.0.2.2 localhost, но это будет не кошерно.
  • Выкладываем наш hosts на устройство adb push c:\hosts /system/etc


После этого вы можете смело стучаться на свой веб-сервер. Если вы перезапустите эмулятор — замену hosts придется выполнить заново. Для ускорения работы удобно создать и использовать один cmd-файл, запускающий эмулятор с нужными параметрами и второй, подменяющий при необходимости hosts на заранее подготовленный.

Все это использовалось при отладке работы приложения PaintUp и галереи PaintUp.net
Теги:
Хабы:
Всего голосов 52: ↑43 и ↓9+34
Комментарии7

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн