2011-09-16 16 views
6

sto provando a scrivere il mio server http Android. È abbastanza OK ma ho un problema con il mio AVD. Non voglio scaricare la mia app sul telefono ogni volta che voglio testare le modifiche. Vorrei connettermi alla mia app tramite AVD. Per ottenere l'indirizzo IP sto usando questa funzione:Come connettersi a AVD

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

sul mio telefono tutto funziona bene, ma quando ho eseguito la mia applicazione su AVD esso mostra ip: 10.0.2.15 e io sono in grado di connettersi ad esso. C'è un modo per connettersi alla mia app in esecuzione su AVD? Se la mia app utilizza la porta 8080.

+0

Sembra problema di firewall. – doNotCheckMyBlog

risposta

0

Mentre non conosco la risposta al problema direttamente, so che quando si collega DA un AVD al computer, si deve usare 10.0.2.2 perché il proprio AVD è essenzialmente dietro un altro "router". Non ottiene un IP LAN locale dal router. Vedere la domanda this per ulteriori informazioni. Da this collegamento, cita:

Ogni istanza dell'emulatore corre dietro un servizio di router/firewall virtuale che lo isola dalla rete del computer di sviluppo interfacce e impostazioni e da internet. Un dispositivo emulato può non visualizzare la propria macchina di sviluppo o altre istanze di emulazione sulla rete . Invece, vede solo che è collegato tramite Ethernet a un router/firewall.

6

Telnet nel dispositivo (supponendo che è sulla porta 5554):

telnet localhost 5554

Alla richiesta console Android utilizzare un reindirizzamento:

redir aggiungere tcp: 8080: 8080

Puntare il browser su "http://127.0.0.1:8080/" ora dovrebbe inviare e ricevere su AVD.

Per gentile concessione di: http://www.rhill.co.uk/?p=35

+0

Non è chiaro da dove deve venire il comando "redir", non è presente nelle immagini più recenti. –

Problemi correlati