我基于这个答案:https://stackoverflow.com/a/58229368/13495096
我需要通过 WSL2 在 Windows 中使用
react-native
进行开发。
我完全按照答案所说的做了,经过几个小时解决了一些错误,到达了这样的地步:
# Android SDK
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
export ANDROID_SDK_ROOT=/usr/lib/android-sdk
export ANDROID_HOME=/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$PATH
我在 Android Studio (Windows) 和 Powershell 中启动设备,运行
adb devices
时,它返回:
List of devices attached
emulator-5554 device
当我在 WSL 终端上运行
adb devices
时,它仅返回 List of devices attached
,没有其他内容。
根据链接的答案,可以做到但我不能。我怎样才能做到这一点?我错过了什么?
我正在从 OS X 迁移到 Windows,但我从未尝试过 Linux。
最终找到了解决我的问题的教程(但提出了其他一些问题,例如无法从 Android 模拟器访问本地主机)
https://gist.github.com/bergmannjg/461958db03c6ae41a66d264ae6504ade
这个问题已经在这个topic中解决了,解决这个问题的方法也很简单:
例如,我在windows中的SDK PATH位于这个位置:
/mnt/d/Android/Sdk/platform-tools/adb.exe
然后在我的 wsl bash 控制台中我需要安装 adb:
sudo apt install adb
wsl中默认的安装路径是这样的:
/usr/bin/adb
现在将 wsl 安装路径中的 adb 更改为 adb_bk:
sudo mv /usr/bin/adb /usr/bin/adb_bk
最后使用 adb.exe 将 wsl 安装中的 PATH 更改为 Windows PATH 安装:
sudo ln -s /mnt/d/Android/Sdk/platform-tools/adb.exe /usr/bin/adb
当我在 Windows 中运行 ADB 设备时,该设备会附加到我的 wsl adb 中:
adb devices
您需要将两个端口从 Windows (10-11) 计算机转发到 WSL-2 - 最简单的方法是使用
socat
,即在 Ubuntu 中,通过以下方式安装:sudo apt install socat
。
现在,在 WSL-2 中,终止 adb 服务器(如果它正在运行):
adb kill-server
。
在 Android studio 中启动您最喜欢的模拟器。
您可以在 Windows 中重新启动 ADB 服务器以确保其正常运行:
adb kill-server
adb -a nodaemon server start
转发ADB端口5037:
socat TCP-LISTEN:5037,reuseaddr,fork TCP:$(cat /etc/resolv.conf | tail -n1 | cut -d " " -f 2):5037
最后转发模拟器端口5556:
socat TCP-LISTEN:5556,reuseaddr,fork TCP:$(cat /etc/resolv.conf | tail -n1 | cut -d " " -f 2):5556
您可以使用
nohup socat [... the rest of command]
在后台运行转发,以避免打开多个终端。