如何在 Windows 上运行 Android 模拟器,同时使用 WSL2 和 zsh?

问题描述 投票:0回答:3

我基于这个答案:https://stackoverflow.com/a/58229368/13495096

我需要通过 WSL2 在 Windows 中使用

react-native
进行开发。

我完全按照答案所说的做了,经过几个小时解决了一些错误,到达了这样的地步:

  • WSL2 已安装并运行(Ubuntu 20.04 LTS)
  • Android Studio 安装在 Windows 10 (Pro x64) 上;
  • ADB 在 WSL2 和 Windows 中具有相同的版本(1.0.32);
  • $PATH 在我的 .zshrc 文件中正确配置(如下):
# 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 linux react-native windows-subsystem-for-linux
3个回答
6
投票

最终找到了解决我的问题的教程(但提出了其他一些问题,例如无法从 Android 模拟器访问本地主机)

https://gist.github.com/bergmannjg/461958db03c6ae41a66d264ae6504ade


2
投票

这个问题已经在这个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


0
投票

您需要将两个端口从 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]
在后台运行转发,以避免打开多个终端。

© www.soinside.com 2019 - 2024. All rights reserved.