Android下修改hosts文件-重启有效

由于某些原因,可能需要指定域名对应的IP地址。Android是基于Linux的系统,与Linux类似,通过hosts文件来设置。先通过各种方法让Android手机获取Root权限。然后通过adb程序访问手机,以命令行方式来替换hosts文件。

在Android下,/etc是link到/system/etc的,我们需要修改/system/etc/hosts来实现。但是这个文件是只读,不能通过shell直接修改。可以通过连接到PC上使用adb来修改。

1、ADB 命令行替换法

为方便操作,可以将压缩包中的adb[1.  adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。]程序连文件夹解压缩到C盘。

步骤如下:

1、获得root权限:adb root
2、设置/system为可读写:adb remount
3、将hosts文件复制到PC:adb pull /system/etc/hosts (此时adb文件夹下已经有了复制到PC上的hosts文件)
4、修改PC机上文件
5、将PC机上文件复制到手机:adb push hosts /system/etc/hosts

如果要查看是否修改成功,可以在PC上执行adb shell,运行cat /system/etc/hosts;或者在手机上运行cat /system/etc/hosts。

hosts文件格式的写法应该是每个域名一行才能使用,例如:

127.0.0.1      host1.example.com
127.0.0.1      host2.example.com
127.0.0.1      host3.example.com

ps:如何判断手机是否已经root了,输入adb shell回车,su 回车,如果出现#,那么你的手机的确ROOT了。

另:文件稍微大点,输入完命令就提示out of memory,在网上找到的解决办法都是针对模拟器的.后来通过下面的方式彻底搞定.

2、针对ROOT但是S-ON的解决方案(猪哥的实践)

我的手机是Legend ,HBOOT-1.0.1  s-on(因为s-on被论坛很多帖子误导),按照以上方式修改后重启就还原了,小郁闷。不过最终还是搞定,感谢hero_213的博文,由于刷的ROM是CM Legend,内置程序中包含CM Recovery(固件管理器中),可以进入Recovery Mode中的shell进行修改。

具体方法:进入固件管理器,选择重启进入恢复模式。

手机重启后会进入CM Recovery 菜单界面,滑动选择 – mounts and storage 项,确认进入.选择第一项 mounts  /system,确认后会变成  unmount/system;

由PC端输入以下命令,也就是由PC上复制已经改好的hosts文件到手机。(以下是假定adb程序和修改后的hosts在同一个文件夹)
adb remount
adb push hosts /system/etc/hosts

修改完成后,回到手机,可以在此操作unmount  /system,变回 mounts  /system,按返回键回到CM Recovery 菜单界面选择第一项reboot 重启即可。

重启后,可以在pc端验证一下
adb shell
cd  /system/etc
cat hosts
看到显示出一堆你hosts中修改的ip地址,说明已经OK.

以上方式同样适用于删除system中的系统程序.
adb shell
cd /system/app
ls
查找到你要删除的文件(如Talk.apk)将其删除之:
rm  Talk.apk(如果还有同名的只是后缀不同,也可以用Talk.*)
重启手机就OK了.

3、使用R.E管理器直接替换

这种方法适合已经ROOT,并且S-OFF的手机,直接将hosts文件复制/system/etc/目录替换系统原来的即可。

4、安装 Android 自动改 Hosts工具

适合已经ROOT,并且S-OFF的手机,安装附件中的 Android 自动改 Hosts.apk.

3 thoughts on “Android下修改hosts文件-重启有效

  1. android 系统改hosts的问题终于解决了~! 多谢分享如此有用的知识~!再次感谢!

    1. S-ON的状态下需要用上述方式,S-OFF的直接用文件管理器提权覆盖是可以的。

Comments are closed.