How to connect to AVD

こ雲淡風輕ζ 提交于 2019-12-01 02:49:38

问题


i'm trying to write my own android http server. It's quite OK but i have a problem with my AVD. I don't want to download my app to phone everytime I want to test changes. I would like to connect to my app via AVD. To get the ip address i'm using this function:

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;
    }

on my phone everything works good, but when i run my app on AVD it shows ip: 10.0.2.15 and i'm unable to connect to it. Is there any way to connect to my app running on AVD ? If it does matter my app uses port 8080.


回答1:


Telnet into the device (assuming it is on port 5554):

telnet localhost 5554

At the Android console prompt use a redirect:

redir add tcp:8080:8080

Pointing your browser to 'http://127.0.0.1:8080/' should now send, and receive to the AVD.

Courtesy of: http://www.rhill.co.uk/?p=35




回答2:


While I don't know the answer to your problem directly, I do know that when connecting FROM an AVD TO your computer, you have to use 10.0.2.2 because your AVD is essentially behind another "router". It doesn't get a local lan IP from your router. See this question for more information. From this link, he quotes:

Each instance of the emulator runs behind a virtual router/firewall service that isolates it from your development machine's network interfaces and settings and from the internet. An emulated device can not see your development machine or other emulator instances on the network. Instead, it sees only that it is connected through Ethernet to a router/firewall.



来源:https://stackoverflow.com/questions/7447221/how-to-connect-to-avd

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!