
我在 Windows 上安裝了 android-sdk,並將其路徑匯出到ANDROID_SDK_ROOT
WSL 環境變數。 WSL 是否能夠使用 Windows 上安裝的 SDK 編譯我的專案?當我嘗試建立 Cordova 專案時,它說我的 SDK 已損壞。這可能是原因嗎?我已經卸載/重新安裝了相同版本的 SDK 和其他一些版本,但問題仍然存在。
答案1
雖然 WSL 上的 Ubuntu 可以執行大多數 Windows 二進位文件,請記住 Windows 二進位檔案仍然無法理解LinuxUbuntu 提供的路徑、進程、環境變數和其他一些設定項/檔案。因此,我通常建議您執行 Windows 程式設計工具,例如從 Windows 執行 Android SDK。如果您想使用LinuxAndroid SDK 版本,您可以在 WSL 下從 Ubuntu 執行此操作。
例如,您提到您匯出了ANDROID_SDK_ROOT
,但是從 Ubuntu/WSL 內部啟動的 Windows 進程將看不到該內容Linux環境變數。
您可以使用以下方法修復此問題WSLENV
多變的WSL 的功能(原始包含更多詳細資訊的開發部落格公告)。
這意味著,對於視窗要查看Android SDK的版本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 不夠熟悉,無法進一步評論。