前提
最近在开发React Native应用,分别用到的Android Studio及Xcode。在测试时发现一个问题:因为处于开发阶段,基本上Api都是调用在本地搭建的站点。当调试时,iPhone模拟器一切正常,Android模拟器只要一调接口就报 Status : -1 错误。
问题
通过查阅资料分析后,确认是Android设备的Hosts并没有同步到PC端上的Hosts,所以没办法访问到本地站点。而iPhone模拟器会自动同步Mac上的Hosts配置(果然苹果全家桶就是好)。
解决
定位到问题就好办了,只要我们将Android设备下的Hosts文件加上我们本地站点的配置,然后处于同一局域网就行了。
- 首先打开你的命令行工具,依次输入以下指令
如果你是Window系统,请先执行下列语句,若是Mac则不需要:
cd ~/User/你的用户名/Library/Android/sdk/platform-tools
adb root
adb disable-verity
adb reboot -- 这一步是重开机,需要等待设备重启后再继续
adb root
adb remount
adb pull /system/etc/hosts ~/Documents/ -- 将hosts文件复制到文稿文件夹里
- 此时你已经将Android设备上的hosts文件复制到电脑上了,修改hosts文件(或者直接从电脑hosts复制过来),修改完毕后执行下列语句
adb push ~/Documents/hosts /system/etc/hosts -- 将修改好的hosts文件重新覆盖到android模拟器上
- 至此大功告成。