我有一段时间没有进行 Android 开发,所以我对现代 Android 开发的了解参差不齐。
我正在尝试学习 React Native。我使用 WSL 作为我的主要开发环境。由于在 Linux/WSL 中设置 Android 模拟器可能会很痛苦,因此我想直接在 Windows 上运行模拟器。但是,我更希望能够在 WSL 中运行 react-native run-android
。
我如何设置 React Native 才能在 WSL 中运行 react-native run-android
并在 Windows 上的 Android 模拟器中运行该应用程序?
我的 ANDROID_HOME
变量应该设置正确,但我对 Android 了解不够,无法知道这是否在做任何事情:
export ANDROID_HOME=/mnt/c/Users/Leo/AppData/Local/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
最佳答案
可以设置它,使模拟器在 Windows 中运行,同时在 WSL 中运行 react-native run-android
。与@pscl 的方式相比,这样做的好处是这种方式支持自动链接。以下是您需要执行的操作才能使其正常运行。
window
Windows 端唯一需要的是安装 Android Studio并设置模拟器/虚拟设备。这非常简单,所以我不会向您介绍。
Linux 的 Windows 子系统
设置这方面的东西还有很多,所以请多多包涵。 (我的 WSL 是 Ubuntu 18.04,这在其他版本上未经测试。)
- 下载并解压缩 Android 命令行工具。 (目前可在 Android Studio 下载页面找到,向下滚动至“仅限命令行工具”并选择 Linux 下载选项。)
- 查看解压后的文件夹,将名为
tools
的目录移动到~/Android/Sdk/tools
。 (如果~/Android/Sdk
目录不存在,则创建它们。) - 下载并解压缩 JDK 8。(我建议从 AdoptOpenJDK 下载。另外,请确保安装 OpenJDK 8,否则
sdkmanager
将无法工作,我们稍后将使用它。) - 将解压后的文件夹移动到
/opt/jdk8u222-b10
。 (实际上你可以把它放在任何你想要的地方,只要确保JAVA_HOME
环境变量指向这个解压缩的文件夹。) - 在您的
~/.bashrc
文件中设置以下环境变量。 (您的路径可能不同!)
export ANDROID_HOME=/home/your-name/Android/Sdk
export JAVA_HOME=/opt/jdk8u222-b10
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
- 重新启动您的 bash 终端并执行命令
sdkmanager "platform-tools"
以下载最新的平台工具。 (adb
工具来自这里。)
react native
现在一切都已设置好,是时候开始玩了!
- 在 Windows 中启动模拟器。
- 在 WSL 中打开您的项目目录并运行
react-native start
。 (保持此终端打开)。 - 在另一个 WSL 终端中打开您的项目目录并运行
react-native run-android
。 (第一次运行此程序时,React Native 将根据您的虚拟设备下载一些其他 SDK。您可以通过运行sdkmanager --list
查看所有已安装的 SDK。有关详细信息,请参阅 docs for sdkmanager .)
在设备上运行
这是关于如何将应用安装到物理设备的快速说明。这里的技巧是确保您的两个 adb
可执行文件都在同一版本上。 (他们应该是因为我们通过 sdkmanager
安装了它。)
C:\Users\your-name\AppData\Local\Android\Sdk\platform-tools\adb.exe version
/home/your-name/Android/Sdk/platform-tools/adb version
一旦确认它们是同一版本,请确保从 Windows 可执行文件启动 adb 服务器(运行 adb.exe kill-server && adb.exe start-server
) .然后您可以通过在 WSL 中运行 adb devices
来测试它是否有效,您应该会看到您的设备已插入。
关于android - 使用直接在 Windows 中运行的模拟器在 WSL 中运行 React Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614347/