Может ли WSL2 использовать Android SDK, установленный в Windows?

Может ли WSL2 использовать Android SDK, установленный в Windows?

У меня установлен android-sdk в Windows, и я экспортировал его путь в ANDROID_SDK_ROOTпеременную среды WSL. Должен ли WSL компилировать мои проекты с использованием SDK, установленного в Windows? Он говорит, что мой SDK поврежден, когда я пытаюсь собрать свой проект Cordova. Может ли это быть причиной? Я удалил/переустановил ту же версию SDK и несколько других, но проблема осталась.

решение1

В то время как Ubuntu на WSL можетвыполнятьбольшинство двоичных файлов Windows, имейте в виду, что двоичные файлы Windows все равно не будут пониматьЛинукспути, процессы, переменные среды и некоторые другие элементы/файлы конфигурации, которые предоставляет Ubuntu. По этой причине я обычно рекомендую вам запускать инструменты программирования Windows, такие как Android SDK из Windows. Если вы хотите использоватьЛинуксверсию Android SDK, вы можете сделать это из Ubuntu под WSL.

Например, вы упоминаете, что экспортировали ANDROID_SDK_ROOT, но процесс Windows, запущенный изнутри Ubuntu/WSL, этого не увидит.Линукспеременная окружения.

Вы можете исправить это с помощью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.

Смешивайте и комбинируйте только в (а) простых случаях или (б) если вы знаете, как выявлять и решать любые возникающие проблемы.

решение2

WSL может запускать программы Windows, но они будут запущены как обычные процессы Windows. Я не знаком с программой, которую вы пытаетесь запустить, но имейте в виду, что это эквивалентно запуску ее в Windows.

Вы можете убедиться, что ваша совместимость работает, вызвав notepad.exeиз Linux и увидев запуск блокнота. Если это сработает, то ваша проблема связана с приложением, которое вы запускаете.

Компиляция в одной ОС с помощью инструментов другой ОС вряд ли сработает, я недостаточно хорошо знаком с Android SDK, чтобы давать какие-либо комментарии.

Связанный контент