最近有个项目刚好要对无线产品的开发,对移动终端的一些常规测试,但是手机又无法指定hosts,无法测试本地啊,咋办呢?这时候想到了wp8的sdk,但是wp8的hosts都是写在注册表里,过于麻烦,然后再考虑到Android,但是又遇到了以下的一些情况,google资料一把,自己整理下后,总体问题解决方法就出来了,国内很多网站也有这些资料,但都不全,甚至说了头没有尾,在这里分享给需要的网友。
用默认的SDK manage.exe打开Android之后,进行修改hosts会提示以下几种错误:
1、Android Read-only file system
2、No space left on device
3、Out of memory
问题分析:
这个也不算是什么问题,可能是打开Android的时候默认了大小,自身的内存没有进行设置,固然导致空间不够的问题。
解决方法:
在E:\Program Files (x86)\os\Android\adt-bundle-windows-x86_64-20130219\sdk\tools里有一个emulator.exe的应用,将它创建一份快捷方式,右键这个快捷方式,选择属性,在目标一览里,在目标地址的后面加上以下参数:
-avd shadow -memory 768 -partition-size 1024
那么全部加起来就是:
"E:\Program Files (x86)\os\Android\adt-bundle-windows-x86_64-20130219\sdk\tools\emulator.exe" -avd shadow -memory 768 -partition-size 1024
-avd 设备名称 -memory 内存大小 -partition-size 设置system和data的空间大小。
如下数据:
[email protected]:/ # df
df
Filesystem Size Used Free Blksize /dev 378M 32K 378M 4096 /mnt/secure 378M 0K 378M 4096 /mnt/asec 378M 0K 378M 4096 /mnt/obb 378M 0K 378M 4096 /system 993M 198M 794M 4096 /data 993M 10M 982M 4096 /cache 64M 1M 62M 4096 /mnt/sdcard 1G 206K 1G 2048 /mnt/secure/asec 1G 206K 1G 2048
当遇到第一种错误的时候,那说明没有写入权限了,按照以下操作可解决该问题。
首先进入E:\Program Files (x86)\os\Android\adt-bundle-windows-x86_64-20130219\sdk\platform-tools,也可将此路径设置一个全局变量,这样就可以直接使用adb了,如果没有设置,那么就需要在命令行进入该目录,然后输入adb.exe 即可达到一样的效果。
首先以root的形式进入命令行
adb shell
先排除Android Read-only file system 错误
mount -o remount rw /
设置目录可读写权限
mount -o remount,rw rootfs /system/
转向hosts所有目录
cd /system/etc
修改hosts文件
#echo "127.0.0.1 localhost" > hosts #echo "127.0.0.1 www.tieyou.com" >> hosts
至此即可对hosts进行修改了,用命令修改固然没有效率,那么可以现在本地创建好hosts,然后退出root shell,ctrl+c即可退出shell模式。
adb push d:/hosts /system/etc/hosts
附上对google的各种墙,解决:Failed to fetch URL https://dl-ssl……等错误
错误信息:
Failed to fectch URl https://dl-ssl.google.com/android/repository/addons_list.xml, reason: Connection to https://dl-ssl.google.com refused
用notepad打开C:/WINDOWS/system32/drivers/etc中的hosts文件
在最后一行添加74.125.237.1 dl-ssl.google.com
成功解决问题。
修改网关等操作如下:
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up route add default gw 192.168.1.1 dev eth0 setprop net.dns1 202.106.0.20
这样就将本地已经创建好的hosts上传到Android了,到此操作结束。