2014-09-11 9 views
5

Ho incrociato il mio codice sorgente Go a Arm per l'esecuzione in Android. Il programma viene eseguito nel terminale nel dispositivo Android, ma viene visualizzato un errore che dice/etc/resolv. conf manca. Il mio programma fa molto affidamento sulla libreria net/http per effettuare chiamate http.Go /etc/resolv.conf mancante in Android

Come posso gestire questo errore in Android?

risposta

4

A partire da ora non è possibile utilizzare la rete integrata in/http per connettersi agli hostname, controllare questo issue.

Esistono poche soluzioni alternative che è possibile utilizzare.

  1. generare /etc/resolv.conf all'avvio del programma se si dispone di accesso root, brutto ma facile e semplice.

  2. store resolv.conf da qualche parte e patch http://golang.org/src/pkg/net/dnsclient_unix.go#L169 per utilizzare quel percorso personalizzato.

  3. patch $GOROOT/src/pkg/net/dnsconfig_unix.go per ottenere i server dei nomi eseguendo getprop net.dns1 e getprop net.dns2.

  4. attuare l'intero cerotto https://gist.github.com/ernesto-jimenez/8042366

+0

Invece di generare /etc/resolv.conf cant mock in un'altra posizione ??? –

+0

@ShenalSilva L'ho aggiunto, ma dovrai applicare una patch a dnsclient_unix per impostare il percorso. – OneOfOne