2010-03-26 15 views
12

La mia attività deve comunicare con un server java situato sulla mia macchina di sviluppo. In realtà, usando l'emulatore, posso accedere al socket del server tramite l'indirizzo speciale 10.0.2.2. Ora vorrei testare la mia app sul mio telefono collegato tramite usb, ma sembra che non possa più usare 10.0.2.2 per accedere al mio localhost della macchina di sviluppo. Naturalmente l'uso di un router wifi e un corretto indirizzamento della lan fa il trucco, ma ho bisogno di usare invece la connessione USB. Qualche suggerimento?Access dev machine localhost via usb

modificare:
appena aggiunto diversi scenari per consentire a tutti capire meglio:

1. emulatore basato su scenario:

  • server di Java Standard in esecuzione sul mio pc @localhost: 15000
  • client java android in esecuzione sul mio emulatore.

Quando l'applicazione Android deve contattare il server utilizza 10.0.2.2:15000 come specificato here. Tutto funziona bene.

2. scenario wifi corretta con dispositivo collegato fisico:

  • server di Java Standard in esecuzione sul mio pc @ 192.168.1.10: 15000.
  • client java android in esecuzione sul mio dispositivo con indirizzo 192.168.1.11 assegnato.

Quando l'app Android deve contattare il server utilizza 192.168.1.10:15000 e tutto funziona perfettamente.

3. scenario desiderato:

  • server di Java Standard in esecuzione sul mio pc @localhost: 15000.
  • client java android in esecuzione sul mio dispositivo collegato tramite cavo usb. Nessuna rete è attiva.

Quando l'app Android deve contattare il server tenta di connettersi a 10.0.2.2:15000 ma viene generata un'eccezione (Rete non raggiungibile). Sembra che l'indirizzo speciale 10.0.2.2 funzioni solo per le istanze dell'emulatore.

Mi chiedo solo se nella suite adb/adt esiste un modo per accedere all'indirizzo del pc dal dispositivo collegato tramite cavo USB. Spero che ora sia un po 'più chiaro. Grazie.

risposta

3

Sembra che non ci sia modo di lasciare che lo scenario # 3 funzioni correttamente, perché la connessione USB non è una vera connessione di rete e non vi è alcun IP associato dal telefono.

In realtà la mia soluzione è utilizzare una connessione wifi ad-hoc tra il mio telefono e il mio pc. Questo scenario è simile al # 2, ma senza router o dhcp. Sfortunatamente il mio eroe non può gestire le connessioni ad-hoc in modo nativo a causa di this issue. Quindi ho dovuto effettuare il root del mio dispositivo e cambiare manualmente alcuni script di configurazione. Spero che funzionalità come questa possano essere disponibili nelle prossime versioni.

0

È possibile impostare una connessione al telefono tramite USB dal PC di sviluppo, ma è necessario adb forward. Tuttavia, non penso che si possa indirizzare l'altra via su usb: impostare una connessione dal telefono al pc.

È possibile collegare il PC al telefono e verificare quale IP ha.

Mentre a pensarci, mi sono reso conto, utilizzando adb forward è necessario utilizzare localhost come host, quindi forse si potrebbe anche fare questo sul tuo telefono: adb forward la porta che si desidera utilizzare e sul telefono, collegare a quella porta su localhost.

+0

Non utilizzo alcuna porta in ascolto sul mio dispositivo. Il server è invece sulla mia macchina di sviluppo. Quindi, se IIRC, adb forward funziona in modo opposto (inoltra il numero di porte delle prese "di ascolto") e questo non è il caso. –

+0

Sì, questo è quello che ho detto, non ero sicuro che la connessione dal tuo dispositivo al PC avrebbe funzionato. Scusate. – MrSnowflake

+0

Questo può funzionare con un tunnel inverso attraverso il quale il telefono può tornare indietro. La maggior parte delle installazioni SSH sosterrebbero quella nostra casella. –