Domanda

Ho il seguente problema:

faccio un file hosts personalizzati per testare alcune caratteristiche della mia applicazione e spingerlo al mio emulatore di Android. Il fatto è che queste impostazioni non hanno effetto immediato. Devo aspettare circa 10 minuti prima che diventino attivi.

Quindi la mia domanda è: come fare file attivo i nuovi host istantaneamente? Ho molte impostazioni diverse per testare e non vedo l'ora di 10 minuti ogni volta.

È stato utile?

Soluzione

Java mantiene la propria cache DNS interno. Il sistema operativo rifletterà il file nuovi host immediatamente (verificare che con ping sulla riga di comando), ma avrete bisogno di dire java non cache di nulla. Aggiungere queste righe alla vostra applicazione di test:

System.setProperty("networkaddress.cache.ttl" , "0"); System.setProperty("networkaddress.cache.negative.ttl" , "0");

Per ulteriori informazioni su queste proprietà, vedere qui: http://docs.oracle.com/javase/ 7 / docs / note tecniche / guide / net / properties.html

Altri suggerimenti

Ho appena modificato il mio file hosts sul mio radicata Samsung Galaxy S, e le modifiche prese effetto immediato. Forse il problema che stai vedendo è qualcosa a che fare con ADB?

Ho fatto questo:

  1. Uso Busybox, copiare il file hosts per una posizione modificabile con cp /etc/hosts /mnt/sdcard/hosts.new;
  2. Modifica /mnt/sdcard/hosts.new usando l'editor di testo pre-installato, aggiungendo le due voci di cui ho bisogno. Ho usato IP, nome host non qualificato, poi nome di dominio completo, ad esempio 192.168.2.81 siva siva.myinventeddomain.org.au, ma altri formati dovrebbe in teoria lavoro troppo;
  3. In BusyBox nuovo, su di radice;
  4. /system è ro di default, così ho dovuto farlo RW con mount -o remount,rw /system;
  5. Per salvare la digitazione più tardi, cd /etc (dopo di che la shell /system/etc mostrato piuttosto che /etc, che mi fa sospettare imbrogli link simbolico);
  6. Eseguire il backup del file hosts di default (che conteneva solo 127.0.0.1 localhost) con mv hosts hosts.old;
  7. Installa nuovo file hosts con mv /mnt/sdcard/hosts.new hosts;
  8. Esegui sync (solo perché sono paranoico - questo non dovrebbe essere necessario);
  9. Remount /system fs ro mount -o remount,ro /system;
  10. Esci BusyBox;
  11. Fired up browser web (Firefox) e siva inserito nell'URL combinato / campo di ricerca thingy (siva essendo uno dei due host voci che ho aggiunto).

Prima di questi cambiamenti, punto 11 ha comportato una ricerca su Google per stupido 'siva' o qualcosa del genere; subito dopo di loro, ho la mia pagina httpd LAN vhost fronte, come mi aspetto.

C'è stato ben al di sotto di 10 minuti trascorsi tra esso di lavoro e non lavoro.

Il collegamento a Java doco di Sun può o non può essere rilevante (probabilmente non lo è). Android non contiene una Java VM a tutti, figuriamoci uno solare. Viene eseguito un diverso VM chiamata Dalvik - vedi voce di Wikipedia: http://en.wikipedia.org / wiki / Dalvik_% 28software% 29

Il fatto che è possibile programmare i telefoni Android in una lingua che assomiglia molto a Java è questo il punto.

Non ho provato utilizzando il file hosts; ma ho provato ad utilizzare DNS personalizzato ...

  1. Avvia un server DNS da qualche parte (è possibile caricare DD-WRT, un router di fantasia, o eseguire un demone su PC).
  2. OPTIONAL:. Configurare il router locale (server DHCP) con la posizione del server DNS in esecuzione (ne fanno prima nell'elenco dei server DNS)
  3. Se SALTO # 2: Configurare il telefono per IP statico (Wi-Fi Impostazioni-> Menu pulsante-> Avanzate). Impostare il DNS1 per essere il vostro server.
  4. connettere il telefono cellulare a questa rete tramite WiFi.

Il fatto! Ora è possibile gestire DNS Nomi / ritagli IP con tempi di locazione (ad esempio in modo che il telefono si aggiorna l'indirizzo IP ogni 30s se voi bisogno). Un po 'complicato, ma non c'è bisogno di caricare il file hosts sul telefono: -).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top