我有以下问题:
我制作一个自定义主机文件来测试我的应用程序的一些功能,然后将其推送到我的Android模拟器。 问题是这些设置不会立即生效。我必须等待大约10分钟才能活跃起来。
所以我的问题是:如何让新主机文件立即生效?我有许多不同的设置要测试,我不能每次等待10分钟。
答案 0 :(得分:5)
Java维护自己的内部DNS缓存。操作系统将立即反映新的hosts文件(在命令行上验证ping
),但是您需要告诉java不要缓存任何内容。将这些行添加到测试应用程序中:
System.setProperty("networkaddress.cache.ttl" , "0");
System.setProperty("networkaddress.cache.negative.ttl" , "0");
有关这些属性的更多信息,请参见此处: http://docs.oracle.com/javase/7/docs/technotes/guides/net/properties.html
答案 1 :(得分:2)
我刚刚在我的root三星Galaxy S上编辑了我的主机文件,这些更改立即生效。也许您所看到的问题与亚行有关?
我这样做了:
cp /etc/hosts /mnt/sdcard/hosts.new
; /mnt/sdcard/hosts.new
,添加我需要的两个条目。我使用IP,然后是非限定主机名,然后使用FQDN,例如192.168.2.81 siva siva.myinventeddomain.org.au
,但其他格式在理论上也应该起作用; su
为root; /system
是ro,所以我必须使用mount -o remount,rw /system
创建它; cd /etc
(因此shell提示符显示/system/etc
而不是/etc
,这让我怀疑符号链接恶作剧); 127.0.0.1 localhost
备份默认主机文件(仅包含mv hosts hosts.old
); mv /mnt/sdcard/hosts.new hosts
; sync
(仅仅因为我是偏执狂 - 这不应该是必要的); /system
; mount -o remount,ro /system
fs ro
siva
(siva
是我添加的两个主机条目之一)。在这些变化之前,第11步导致谷歌搜索“siva”或其他东西;紧接着他们之后,我得到了我的LAN httpd vhost的首页,正如我所料。
它在工作和不工作之间经过了不到10分钟。
Sun的Java doco的链接可能相关也可能不相关(可能不相关)。 Android根本不包含Java VM,更不用说Sun的了。它运行一个名为Dalvik的不同VM - 请参阅维基百科条目:http://en.wikipedia.org/wiki/Dalvik_%28software%29
你可以用一种看起来很像Java的语言来编写Android手机这一事实是不可或缺的。
答案 2 :(得分:0)
我没有尝试过使用hosts文件;但我尝试过使用自定义DNS ...
你做完了!现在,您可以管理DNS名称/ IP配置以及租用时间(例如,如果您需要,手机将每隔30秒更新一次IP)。有点复杂,但您不必在手机上加载主机文件: - )。