host Android utilizzo di file
-
09-10-2019 - |
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.
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:
- Uso Busybox, copiare il file hosts per una posizione modificabile con
cp /etc/hosts /mnt/sdcard/hosts.new
; - 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 esempio192.168.2.81 siva siva.myinventeddomain.org.au
, ma altri formati dovrebbe in teoria lavoro troppo; - In BusyBox nuovo,
su
di radice; -
/system
è ro di default, così ho dovuto farlo RW conmount -o remount,rw /system
; - 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); - Eseguire il backup del file hosts di default (che conteneva solo
127.0.0.1 localhost
) conmv hosts hosts.old
; - Installa nuovo file hosts con
mv /mnt/sdcard/hosts.new hosts
; - Esegui
sync
(solo perché sono paranoico - questo non dovrebbe essere necessario); - Remount
/system
fs romount -o remount,ro /system
; - Esci BusyBox;
- 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 ...
- Avvia un server DNS da qualche parte (è possibile caricare DD-WRT, un router di fantasia, o eseguire un demone su PC).
- OPTIONAL:. Configurare il router locale (server DHCP) con la posizione del server DNS in esecuzione (ne fanno prima nell'elenco dei server DNS)
- Se SALTO # 2: Configurare il telefono per IP statico (Wi-Fi Impostazioni-> Menu pulsante-> Avanzate). Impostare il DNS1 per essere il vostro server.
- 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: -).