我有以下问题:

我制作一个自定义主机文件以测试应用程序的某些功能,然后将其推向我的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上编辑了主机文件,更改立即生效。也许您看到的问题与ADB有关?

我这样做了:

  1. 使用BusyBox,将主机文件复制到具有可编辑的位置 cp /etc/hosts /mnt/sdcard/hosts.new;
  2. 编辑 /mnt/sdcard/hosts.new 使用预安装的文本编辑器,添加我需要的两个条目。我使用了IP,然后是不合格的主机名,然后是FQDN,例如 192.168.2.81 siva siva.myinventeddomain.org.au, ,但理论上的其他格式也应该起作用;
  3. 再次在busybox中, su 扎根;
  4. /system 默认情况下是ro,所以我必须与 mount -o remount,rw /system;
  5. 为了保存键入, cd /etc (于是壳提示显示 /system/etc 而不是 /etc, ,这让我怀疑Symlink Shenanigans);
  6. 备份默认主机文件(仅包含 127.0.0.1 localhost) 和 mv hosts hosts.old;
  7. 使用 mv /mnt/sdcard/hosts.new hosts;
  8. 执行 sync (仅仅因为我是偏执的 - 这不是必需的);
  9. 重新安装 /system fs ro with mount -o remount,ro /system;
  10. 退出Busybox;
  11. 启动了Web浏览器(Firefox)并输入 siva 在组合的URL/搜索字段中siva 是我添加的两个主机条目之一)。

在进行这些更改之前,步骤11导致了愚蠢的Google搜索“ Siva”之类的东西。在他们之后,我立即获得了我的LAN HTTPD VHOST的首页。

它的工作和无法正常工作之间的10分钟不到10分钟。

与Sun Java doco的链接可能是或可能不相关的(可能不是)。 Android根本不包含Java VM,更不用说Sun的VM了。它运行另一个名为Dalvik的VM - 请参阅Wikipedia条目: http://en.wikipedia.org/wiki/dalvik_%28software%29

您可以用看起来很像Java的语言对Android手机进行编程的事实。

我没有尝试使用主机文件;但是我尝试使用自定义DNS ...

  1. 在某个地方启动DNS服务器(您可以加载DD-WRT,带有花式路由器或在PC上运行守护程序)。
  2. 可选:将您的本地路由器(DHCP服务器)配置为运行DNS服务器的位置(在DNS服务器列表中首先将其放在首位)。
  3. 如果跳过#2:将手机配置为静态IP(Wi-Fi设置 - >菜单按钮 - >高级)。将DNS1设置为您的服务器。
  4. 通过WiFi将手机连接到此网络。

你完成了!现在,您可以管理DNS名称/IP套件以及租赁时间(例如,如果需要,手机将每30秒更新IP)。有些复杂,但是您不必在手机上加载主机文件:-)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top