Android-Hosts Dateinutzung
-
09-10-2019 - |
Frage
Ich habe folgendes Problem:
Ich mache eine benutzerdefinierte Datei hosts einige Funktionen meiner Anwendung zu testen und dann schieben Sie es auf meinem Android-Emulator. Die Sache ist, dass diese Einstellungen wirksam werden nicht sofort. Ich habe etwa 10 Minuten warten, bevor sie aktiv werden.
Also meine Frage ist: wie die neuen Hosts zu machen Datei sofort aktiv? Ich habe viele verschiedene Einstellungen zu testen und ich kann nicht 10 Minuten jedes Mal warten.
Lösung
Java verfügt über eine eigenen internen DNS-Cache. Das Betriebssystem wird spiegelt die neuen Host-Datei sofort (überprüfen, ob mit ping
auf der Kommandozeile), aber Sie werden Java zu sagen brauchen nicht zu Cache nichts. Fügen Sie diese Zeilen zu Testanwendung:
System.setProperty("networkaddress.cache.ttl" , "0");
System.setProperty("networkaddress.cache.negative.ttl" , "0");
Weitere Informationen zu diesen Eigenschaften finden Sie hier: http://docs.oracle.com/javase/ 7 / docs / technotes / guides / net / properties.html
Andere Tipps
ich meine hosts-Datei gerade bearbeitet auf meinem wurzelt Samsung Galaxy S, und die Änderungen nahm sofort wirksam. Vielleicht ist das Problem Sie sehen, ist etwas mit ADB zu tun?
Ich habe diese:
- Verwenden von Busybox, kopieren Sie die Hosts-Datei in ein editierbares Lage mit
cp /etc/hosts /mnt/sdcard/hosts.new
; - Bearbeiten
/mnt/sdcard/hosts.new
die vorinstallierte Texteditor, die Addition der beiden Einträge ich brauche. Ich verwenden IP, dann unqualifizierte Hostnamen, dann FQDN, zB192.168.2.81 siva siva.myinventeddomain.org.au
, aber auch andere Formate sollen in der Theorie Arbeit zu; - In BusyBox wieder
su
root; -
/system
ist ro standardmäßig also stelle ich musste es rw mitmount -o remount,rw /system
; - Um später
cd /etc
(worauf die Shell-Prompt zeigte/system/etc
statt/etc
, die mich vermuten Symlink Spielereien macht) speichern eingeben; - Sichern Sie die Standard-Host-Datei (die nur
127.0.0.1 localhost
enthalten) mitmv hosts hosts.old
; - Installieren neue Hosts-Datei mit
mv /mnt/sdcard/hosts.new hosts
; -
sync
Ausführen (nur weil ich paranoid bin - sollte dies nicht notwendig sein); - Remount
/system
fs ro mitmount -o remount,ro /system
; - Beenden BusyBox;
- Fired up Web-Browser (FireFox) und trat
siva
in der kombinierten URL / search Feld Dingen (siva
einen der beiden Gastgeber sind Einträge ich hinzugefügt).
Vor diesen Veränderungen Schritt 11 führte zu einer dummen Google-Suche nach ‚Siva‘ oder etwas; unmittelbar nach ihnen, erhalte ich meine LAN httpd vhost auf der Titelseite, wie ich erwartet.
Es war deutlich unter 10 Minuten vergangen zwischen ihm arbeiten und es funktioniert nicht.
Der Link zu Suns Java doco kann oder nicht relevant sein (wahrscheinlich ist es nicht). Android keine Java VM überhaupt enthalten, geschweige denn von Sun ein. Es läuft eine andere VM Dalvik genannt - Wikipedia-Eintrag sehen: http://en.wikipedia.org / wiki / Dalvik_% 28software% 29
Die Tatsache, dass Sie Android-Handys in einer Sprache programmieren können, die viel wie Java sieht nebensächlich ist.
Ich habe nicht versucht, die Hosts-Datei verwendet wird; aber ich habe versucht, individuelle DNS mit ...
- Starten Sie einen DNS-Server irgendwo (Sie können DD-WRT laden, ein schickes Router oder einen Daemon auf Ihrem PC).
- . Optional: Konfigurieren Sie Ihren lokalen Router (DHCP-Server) mit der Lage des laufenden DNS-Server (es zuerst in der DNS-Server-Liste machen)
- IF SKIPPING # 2: Konfigurieren Sie Ihr Telefon für statische IP (Wi-Fi Einstellungen-> Menü Knopf-> Fortgeschrittene). Stellen Sie den DNS1 Ihren Server.
- Haben Sie Ihr Telefon eine Verbindung zu diesem Netzwerk über WIFI.
fertig! Jetzt können Sie DNS-Namen / IP-Schnipsel zusammen mit Lease-Zeiten verwalten (zum Beispiel so das Telefon die IP alle 30s aktualisiert wird, wenn Sie benötigen). Etwas kompliziert, aber Sie haben nicht die Hosts-Datei auf dem Handy laden müssen: -.)