
Ich habe das Android-SDK unter Windows installiert und seinen Pfad in die WSL-Umgebungsvariable exportiert ANDROID_SDK_ROOT
. Sollte WSL meine Projekte mit dem unter Windows installierten SDK kompilieren können? Beim Versuch, mein Cordova-Projekt zu erstellen, wird angezeigt, dass mein SDK beschädigt ist. Könnte das die Ursache sein? Ich habe dieselbe Version des SDK und einige andere deinstalliert/neu installiert, aber das Problem besteht weiterhin.
Antwort1
Während Ubuntu auf WSLausführendie meisten Windows-Binärdateien, denken Sie daran, dass Windows-Binärdateien immer noch nicht verstehenLinuxPfade, Prozesse, Umgebungsvariablen und einige andere Konfigurationselemente/Dateien, die Ubuntu bereitstellt. Aus diesem Grund empfehle ich normalerweise, Windows-Programmiertools wie das Android SDK von Windows aus auszuführen. Wenn Sie dasLinuxVersion des Android SDK können Sie das von Ubuntu unter WSL aus tun.
Sie erwähnen beispielsweise, dass Sie exportiert haben ANDROID_SDK_ROOT
, aber ein Windows-Prozess, der innerhalb von Ubuntu/WSL gestartet wurde, sieht das nichtLinuxUmgebungsvariable.
Sie können dies beheben, indem Sie dieWSLENV
VariableMerkmal der WSL (ursprünglichDevblog-Ankündigung mit mehr Details).
Das bedeutet, für dieWindowsUm die Version des Android SDK anzuzeigen ANDROID_SDK_ROOT
, müssen Sie der WSLENV
Variablen diesen Variablennamen hinzufügen.
Zum Beispiel:
export ANDROID_SDK_ROOT='C:\path\to\SDK\`
export WSLENV="$WSLENV:ANDROID_SDK_ROOT`
Dies könnte zwar die Lösung seinTeildes Problems, beachten Sie, dass Sie dieWindowsPfadformat oben anstelle des WSL/Linux-Pfads ( /mnt/c/path/...
). Dies liegt daran, dass Sie einWindowsVerfahren.
Diese ProblemekönnteTheoretisch kann das alles mit Dingen wie wslpath
, WSLENV
, und anderen Funktionen umgangen werden, aber noch einmal, für Tools wie dieses würde ich normalerweise empfehlen:
- Verwenden der Windows-Version der Toolchain (Editor, Befehlszeile, SDK, Tools usw.)
- Oder verwenden Sie ausschließlich Linux-Versionen der Toolchain.
Kombinieren Sie die Methoden nur (a) in einfachen Fällen oder (b) wenn Sie wissen, wie Sie auftretende Probleme beheben können.
Antwort2
WSL kann Windows-Programme ausführen, diese werden jedoch als normale Windows-Prozesse ausgeführt. Ich kenne das Programm, das Sie ausführen möchten, nicht, aber seien Sie sich bewusst, dass dies dem Ausführen unter Windows entspricht.
Sie können die Interoperabilität sicherstellen, indem Sie notepad.exe
von Linux aus aufrufen und sehen, wie Notepad gestartet wird. Wenn dies funktioniert, ist Ihr Problem spezifisch für die Anwendung, die Sie ausführen.
Das Kompilieren in einem Betriebssystem mit den Tools eines anderen Betriebssystems scheint nicht zu funktionieren. Ich bin mit dem SDK von Android nicht vertraut genug, um weitere Kommentare dazu abgeben zu können.