Android主机文件使用情况

时间:2010-11-13 22:26:00

标签: android hosts-file

我有以下问题:

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

所以我的问题是:如何让新主机文件立即生效?我有许多不同的设置要测试,我不能每次等待10分钟。

3 个答案:

答案 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上编辑了我的主机文件,这些更改立即生效。也许您所看到的问题与亚行有关?

我这样做了:

  1. 使用Busybox,将hosts文件复制到cp /etc/hosts /mnt/sdcard/hosts.new;
  2. 的可编辑位置
  3. 使用预安装的文本编辑器编辑/mnt/sdcard/hosts.new,添加我需要的两个条目。我使用IP,然后是非限定主机名,然后使用FQDN,例如192.168.2.81 siva siva.myinventeddomain.org.au,但其他格式在理论上也应该起作用;
  4. 再次在BusyBox中,su为root;
  5. 默认情况下,
  6. /system是ro,所以我必须使用mount -o remount,rw /system创建它;
  7. 要稍后保存输入,cd /etc(因此shell提示符显示/system/etc而不是/etc,这让我怀疑符号链接恶作剧);
  8. 使用127.0.0.1 localhost备份默认主机文件(仅包含mv hosts hosts.old);
  9. 使用mv /mnt/sdcard/hosts.new hosts;
  10. 安装新的主机文件
  11. 执行sync(仅仅因为我是偏执狂 - 这不应该是必要的);
  12. 使用/system;
  13. 重新安装mount -o remount,ro /system fs ro
  14. 退出BusyBox;
  15. 启动了网络浏览器(FireFox)并在组合的网址/搜索字段中输入了sivasiva是我添加的两个主机条目之一)。
  16. 在这些变化之前,第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 ...

  1. 在某处启动DNS服务器(您可以加载DD-WRT,使用花哨的路由器,或在PC上运行守护程序)。
  2. 可选:使用正在运行的DNS服务器的位置配置本地路由器(DHCP服务器)(在DNS服务器列表中首先显示)。
  3. 如果跳过#2:将手机配置为静态IP(Wi-Fi设置 - >菜单按钮 - >高级)。将DNS1设置为您的服务器。
  4. 让手机通过WIFI连接到此网络。
  5. 你做完了!现在,您可以管理DNS名称/ IP配置以及租用时间(例如,如果您需要,手机将每隔30秒更新一次IP)。有点复杂,但您不必在手机上加载主机文件: - )。