因为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