我在 Windows 上安装了 android-sdk,并将其路径导出到ANDROID_SDK_ROOT
WSL 环境变量。WSL 是否应该能够使用安装在 Windows 上的 SDK 编译我的项目?当我尝试构建我的 Cordova 项目时,它说我的 SDK 已损坏。这可能是原因吗?我已经卸载/重新安装了相同版本的 SDK 和其他几个,但问题仍然存在。
我在 Windows 上安装了 android-sdk,并将其路径导出到ANDROID_SDK_ROOT
WSL 环境变量。WSL 是否应该能够使用安装在 Windows 上的 SDK 编译我的项目?当我尝试构建我的 Cordova 项目时,它说我的 SDK 已损坏。这可能是原因吗?我已经卸载/重新安装了相同版本的 SDK 和其他几个,但问题仍然存在。
虽然 WSL 上的 Ubuntu 可以执行大多数 Windows 二进制文件,但请记住,Windows 二进制文件仍然无法理解Linux路径、进程、环境变量以及 Ubuntu 提供的一些其他配置项/文件。出于这个原因,我通常建议您从 Windows 运行 Windows 编程工具,例如 Android SDK。如果您想使用 Android SDK 的Linux版本,您可以在 WSL 下从 Ubuntu 执行此操作。
例如,您提到您 exported
ANDROID_SDK_ROOT
,但是从 Ubuntu/WSL 内部启动的 Windows 进程将看不到该Linux环境变量。您可以使用WSL的
WSLENV
变量功能(包含更多详细信息的原始开发博客公告)来解决此问题。也就是说,要让Windows版本的 Android SDK 看到
ANDROID_SDK_ROOT
,你需要在变量中加上那个变量名WSLENV
。例如:
虽然这可能会解决部分问题,但请注意,您必须使用上面的Windows路径格式而不是 WSL/Linux 路径 (
/mnt/c/path/...
)。这是因为您正在运行Windows进程。理论上,这些问题都
wslpath
可以通过、WSLENV
和其他功能来解决,但同样,对于这样的工具,我通常会建议:仅在 (a) 简单情况下,或 (b) 如果您知道如何排除故障并解决出现的任何问题,才混合搭配。
WSL 可以运行 Windows 程序,但它们将作为正常的 Windows 进程运行。我不熟悉您要运行的程序,但请注意它等同于在 Windows 上运行它。
您可以通过
notepad.exe
从 Linux 调用并看到记事本启动来确保您的互操作性有效。如果这有效,那么您的问题特定于您正在运行的应用程序。用另一个操作系统的工具在一个操作系统中编译似乎不太可能工作,我对 Android 的 SDK 不够熟悉,无法进一步评论。