android 下修改 hosts文件 及 out of memory的解决

因为android模拟器host文件无法修改,导致无法通过域名使用http方法调用内网服务,因此从网上大量转载的一种方法,这种方法:

1. 通过emulator -avd avdName -partition-size 128 启动模拟器

2.通过adb root 和 adb remount 命令获得root权限。

3.通过 adb pull /system/etc/hosts 命令将hosts文件转移到PC上,手动修改hosts,并且通过adb push将hosts文件再推送回去。

这个问题是因为linux中的换行符和window中的回车换行不一致引起的,网上大部分方法是让利用ultraedit等编辑器直接修改,但是我复制到编辑器上依然无法修改。上贴中的malbers回复说,利用echo命令,可以直接通过命令将需要修改的内容添加到hosts文件中,试了一下,果然可行。

     首先键入 adb shell 命令(新版本的sdk adb命令被转移到了platform-tools目录中),然后echo 192.168.0.246 www.aaa.com>>/system/etc/hosts,敲入上面这条命令后,再使用 cat /system/etc/hosts查看hosts文件修改情况,发现hosts果然已经被修改,但是问题是依然没有换行,貌似只有换行了以后才能被识别,

因此再次利用echo命令加入了换行符,问题解决。具体操作如下:

     前面几个步骤不变,但是不需要将hosts文件pull到电脑上,如果你已经修改了但是无效,可以先pull出来,还原到原始状态,不要有任何换行,并替换掉

模拟器上已经修改的hosts,使它回复到原始状态。即只有127.0.0.1 localhost。

    然后进入adb shell , 使用 echo -e \\n >> /system/etc/hosts 为hosts文件加入换行符。

    再次使用 echo 192.168.0.246 www.aaa.com >> /system/etc/hosts 。

    这样就完整解决了换行问题。再次在浏览器中敲入www.aaa.com,熟悉的页面也出现了。

具体步骤如下

1、获得root权限:adb root

2、设置/system为可读写:adb remount

3、将hosts文件复制到PC:adb pull /system/etc/hosts <PC机上文件名>

4、修改PC机上文件

5、将PC机上文件复制到手机:adb push <PC机上文件名> /system/etc/hosts

但在第五步时,有的人会报  out of memory的错误

这是因为直接用命令行启动,而没加一个参数造成的,所以用下面这个命令来启动就行了

$emulator –avd youravdname –partition-size 128

来源于(可能被墙了)

http://www.cuteandroid.com/tips-for-android-developer-failed-to-copy-file-to-system

上一篇:进程间通信系列 之 命名管道FIFO及其应用实例


下一篇:Android SDK 更新时修改hosts文件仍然无法更新,可试试这个方法……