Window AVD + WSL2上运行React Native
背景
WSL2已经出了一些日子了,对比WSL1,WSL2是跑在虚拟机中的完整 Linux,所以功能方面要比WSL强大一些。并且linux环境刷Node问题会少些,比如node_sass不好安装、NodeModules路径名过长等等。
WSL2 缺点
- 进程不再会显示在任务管理器里,也无法在 WSL2 外操作,包括不再支持本机系统的防火墙规则。
- 默认无法从其他机器访问到 WSL2 中监听的端口,需要在本机系统设置端口转发(如 netsh interface portproxy add )。
开搞
Windows wsl版本、adb版本、adb devices
确保Window 已经配好Android + RN的环境了
如果没配置好,可以参考官方文档,教程写的还是不错的。
配置WSL2中Android环境
注意把代码中的
为了防止有些小伙伴没法下载sdk-tools-linux-4333796.zip, 我把这文件放到CDN上了,点击这里下载
1 | cd /home/<user>/ |
在WSL2中映射Windows环境的ADB
如果不映射的话,会出现windows下powershell运行adb devices会出现模拟器,但是在wsl2中运行adb devices会出现空列表。如下图:
用vim打开.bashrc
1 | sudo vim ~/.bashrc |
设置adb.exe和fastboot.exe别名
1 | alias adb='adb.exe' |
重新载入
1 | source .bashrc |
在WSL2中运行abd devices,会出现跟powershell中一样的设备了,如下图
让WSL2的metro bundle可以被模拟器访问
metro bundle运行在WLS2中,监听8081端口。有的时候模拟器无法直接连接到metro bundler,用下面的脚本在powershell中运行可以解决
1 | iex "netsh interface portproxy delete v4tov4 listenport=8081 listenaddress=127.0.0.1" | out-null; |
如果你想看WSL的IP地址,可以用下面的命令
1 | echo $WSL_CLIENT |
在WSL2中运行React Native
1 | npx react-native start |
此时在windows打开chrome,http://127.0.0.1:8081 和 http://<$WSL_CLIENT>:8081均可以监听到RN服务。
$WSL_CLIENT就是上一步echo $WSL_CLIENT打印出来的本机WSL的ip地址
其他注意事项
把项目放在WSL2中
不要放在windows文件夹下,然后拿/mnt/c/xxx这种方式来访问项目,目前windows和WSL2通讯很慢的。直接在把项目放在WSL2中,你会感受到飞一般的速度。
VSCODE可以安装Remote - WSL这个扩展,它可以打开你WSL2中的目录
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jianqiao0313!
评论