Как подключиться к AVD - PullRequest
       44

Как подключиться к AVD

6 голосов
/ 16 сентября 2011

Я пытаюсь написать свой собственный HTTP-сервер Android. Это нормально, но у меня проблема с моим AVD. Я не хочу загружать свое приложение на телефон каждый раз, когда хочу проверить изменения. Я хотел бы подключиться к своему приложению через AVD. Чтобы получить IP-адрес, я использую эту функцию:

private String getLocalIpAddress() {


        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); }
                }
            }
        } catch (SocketException ex) {
            Log.e("ServerActivity", ex.toString());
        }
        return null;
    }

на моем телефоне все работает хорошо, но когда я запускаю свое приложение на AVD, он показывает ip: 10.0.2.15 и я не могу подключиться к нему. Есть ли способ подключиться к моему приложению, работающему на AVD? Если это имеет значение, мое приложение использует порт 8080.

Ответы [ 2 ]

6 голосов
/ 14 июня 2012

Telnet в устройство (при условии, что оно находится на порту 5554):

телнет localhost 5554

В командной строке Android используйте перенаправление:

redir add tcp: 8080: 8080

Указание вашему браузеру 'http://127.0.0.1:8080/' теперь должно отправлять и получать в AVD.

Предоставлено: http://www.rhill.co.uk/?p=35

0 голосов
/ 16 сентября 2011

Хотя я не знаю ответа на вашу проблему напрямую, я знаю, что при подключении ОТ AVD к вашему компьютеру вы должны использовать 10.0.2.2, потому что ваш AVD по существу находится позади другого «маршрутизатора».Он не получает локальный IP-адрес от вашего роутера.См. этот вопрос для получения дополнительной информации.Из этой ссылки он цитирует:

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

...