10

我有以下问题:

我制作了一个自定义主机文件来测试我的应用程序的一些功能,然后将其推送到我的 android 模拟器。问题是这些设置不会立即生效。我必须等待大约 10 分钟才能激活它们。

所以我的问题是:如何使新的主机文件立即激活?我有许多不同的设置要测试,每次都等不及 10 分钟。

4

3 回答 3

5

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

于 2011-01-29T23:56:04.887 回答
2

我刚刚在我的根三星 Galaxy S 上编辑了我的主机文件,更改立即生效。也许您看到的问题与亚行有关?

我这样做了:

  1. 使用 Busybox,将 hosts 文件复制到一个可编辑的位置,使用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 中,suroot;
  4. /system默认情况下是 ro,所以我必须用 rw 设置它mount -o remount,rw /system
  5. 为了节省以后打字,cd /etc(因此shell提示显示/system/etc而不是/etc,这让我怀疑符号链接恶作剧);
  6. 使用;备份默认主机文件(仅包含127.0.0.1 localhostmv hosts hosts.old
  7. mv /mnt/sdcard/hosts.new hosts使用;安装新的主机文件
  8. 执行sync(仅仅因为我偏执——这不应该是必要的);
  9. 用;重新挂载/systemfs romount -o remount,ro /system
  10. 退出忙箱;
  11. 启动 Web 浏览器 (FireFox) 并输入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 手机进行编程,这一事实是无关紧要的。

于 2011-10-22T01:51:16.160 回答
0

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

  1. 在某处启动 DNS 服务器(您可以加载 DD-WRT、拥有精美的路由器或在您的 PC 上运行守护程序)。
  2. 可选:使用正在运行的 DNS 服务器的位置配置您的本地路由器(DHCP 服务器)(使其位于 DNS 服务器列表的首位)。
  3. 如果跳过#2:为您的手机配置静态 IP(Wi-Fi 设置->菜单按钮->高级)。将 DNS1 设置为您的服务器。
  4. 让您的手机通过 WIFI 连接到该网络。

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

于 2011-01-29T23:23:56.090 回答