![WSL2 可以使用 Windows 上安装的 Android SDK 吗?](https://linux22.com/image/1190788/WSL2%20%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20Windows%20%E4%B8%8A%E5%AE%89%E8%A3%85%E7%9A%84%20Android%20SDK%20%E5%90%97%EF%BC%9F.png)
我在 Windows 上安装了 android-sdk,并将其路径导出到ANDROID_SDK_ROOT
WSL 环境变量。WSL 是否应该能够使用安装在 Windows 上的 SDK 编译我的项目?当我尝试构建我的 Cordova 项目时,它说我的 SDK 已损坏。这可能是原因吗?我卸载/重新安装了相同版本的 SDK 和其他一些版本,但问题仍然存在。
答案1
虽然 WSL 上的 Ubuntu 可以执行大多数 Windows 二进制文件,请记住 Windows 二进制文件仍然无法理解Linux路径、进程、环境变量以及 Ubuntu 提供的一些其他配置项/文件。因此,我通常建议您运行 Windows 编程工具,例如 Windows 中的 Android SDK。如果您想使用Linux版本的 Android SDK,您可以从 WSL 下的 Ubuntu 中执行此操作。
例如,你提到你导出了ANDROID_SDK_ROOT
,但从 Ubuntu/WSL 内部启动的 Windows 进程将看不到该Linux环境变量。
您可以使用以下方法解决此问题WSLENV
多变的WSL 的功能(原始devblog 公告有更多详细信息)。
这意味着,对于视窗版本来查看ANDROID_SDK_ROOT
,需要将该变量名添加到WSLENV
变量中。
例如:
export ANDROID_SDK_ROOT='C:\path\to\SDK\`
export WSLENV="$WSLENV:ANDROID_SDK_ROOT`
虽然这也许可以解决部分的问题,请注意,您必须使用视窗路径格式,而不是 WSL/Linux 路径(/mnt/c/path/...
)。这是因为您正在运行视窗过程。
这些问题可以理论上,所有问题都可以通过诸如、和其他功能来解决wslpath
,WSLENV
但同样,对于这样的工具,我通常会建议:
- 使用 Windows 版本的工具链(编辑器、命令行、SDK、工具等)
- 或者使用全Linux版本的工具链。
仅在 (a) 简单情况下或 (b) 您知道如何排除故障并解决出现的任何问题时才进行混合搭配。
答案2
WSL 可以运行 Windows 程序,但它们将作为普通的 Windows 进程运行。我不熟悉您尝试运行的程序,但请注意,它相当于在 Windows 上运行它。
您可以通过notepad.exe
从 Linux 调用并查看记事本启动来确保互操作性正常运行。如果此操作有效,则您的问题与您正在运行的应用程序有关。
在一个操作系统中使用另一个操作系统的工具进行编译似乎不太可能实现,我对 Android 的 SDK 不够熟悉,无法进一步发表评论。