我有以下问题:
我制作了一个自定义主机文件来测试我的应用程序的一些功能,然后将其推送到我的 android 模拟器。问题是这些设置不会立即生效。我必须等待大约 10 分钟才能激活它们。
所以我的问题是:如何使新的主机文件立即激活?我有许多不同的设置要测试,每次都等不及 10 分钟。
我有以下问题:
我制作了一个自定义主机文件来测试我的应用程序的一些功能,然后将其推送到我的 android 模拟器。问题是这些设置不会立即生效。我必须等待大约 10 分钟才能激活它们。
所以我的问题是:如何使新的主机文件立即激活?我有许多不同的设置要测试,每次都等不及 10 分钟。
Java 维护自己的内部 DNS 缓存。操作系统将立即反映新的主机文件(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
我刚刚在我的根三星 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,所以我必须用 rw 设置它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
fs romount -o remount,ro /system
siva
组合的 URL/搜索字段 thingy(siva
是我添加的两个主机条目之一)。在进行这些更改之前,第 11 步导致 Google 搜索“siva”或其他内容的愚蠢行为;正如我所料,紧随他们之后,我得到了我的 LAN httpd vhost 的首页。
它工作和不工作之间的时间不到 10 分钟。
Sun 的 Java doco 的链接可能相关,也可能不相关(可能不相关)。Android 根本不包含 Java VM,更不用说 Sun 的了。它运行一个名为 Dalvik 的不同 VM - 请参阅 Wikipedia 条目:http ://en.wikipedia.org/wiki/Dalvik_%28software%29
您可以用一种看起来很像 Java 的语言对 Android 手机进行编程,这一事实是无关紧要的。
我没有尝试使用主机文件;但我尝试过使用自定义 DNS ......
你完成了!现在您可以管理 DNS 名称/IP 配对以及租用时间(例如,如果您需要,电话将每 30 秒更新一次 IP)。有点复杂,但您不必在手机上加载主机文件:-)。