无法在Windows 10 Linux子系统中找到“ANDROID_HOME”环境变量

时间:2018-04-11 02:44:16

标签: android cordova ionic-framework

我正在尝试运行ionic cordova build --release android,但这会收到此错误。:

CordovaError: Failed to find 'ANDROID_HOME' environment variable. Try setting it manually.
Failed to find 'android' command in your 'PATH'. Try update your 'PATH' to include path to valid SDK directory.

我正在使用Windows 10,但我正在使用linux子系统(所以我正在做所有的linux命令等等)。

我进入了我的系统变量并输入了适用于Windows的Android SDK内容,如下所示:

enter image description here

但是当我回到bash / shell时,当我echo $ANDROID_HOME时,它没有显示我设置的路径。我应该安装适用于Linux的Android SDK并指出它吗?或者有一点我可以将这个ANDROID_HOME路径指向我的C:/驱动器,因为当我在Linux子系统上时我认为没有C:/驱动器

2 个答案:

答案 0 :(得分:7)

这是因为linux子系统环境变量与Windows环境变量是分开的,但默认情况下从创建者更新开始共享的PATH除外。

在这种情况下,您必须将ANDROID_HOME添加到linux环境变量中。一种方法是将其添加到~/.bashrc

nano ~/.bashrc

将以下代码添加到文件末尾

export ANDROID_HOME="/mnt/c/Users/<user_name>/AppData/Local/Android/sdk"
export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools"

保存,退出并运行source

source ~/.bashrc

现在你将能够从linux子系统运行android sdk工具,尽管有一个警告,你必须为每个工具添加.exe。例如:

adb --> won't work
adb.exe --> works

答案 1 :(得分:1)

所以我在这方面写了一个很大的答案,由于某些原因我无法找到它。我不知道它是否没有发布或发生了什么。所以重写我之前写的内容

Windows和Windows Sub System Linux默认不共享任何环境变量。但是有一种方法可以在两者之间自动共享变量,如下文

中所述

https://blogs.msdn.microsoft.com/commandline/2017/12/22/share-environment-vars-between-wsl-and-windows/

默认情况下,您的c:\会映射到/mnt/c。现在你有两个选择

外壳环境

您可以更新~/.bashrc~/.bash_profile(无论您使用哪个)并导出变量

export ANDROID_HOME="/mnt/c/Android/sdk"
export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools"

共享环境

Windows创建了一个名为WSLENV的特殊环境变量。此环境变量可用于在两个环境之间共享变量,还可以自动转换路径。在我们潜入一些特殊标志之前

  • / p :此标志表示应在WSL路径和Win32路径之间转换路径。
  • / l :此标志表示该值是路径列表。在WSL中,它是以冒号分隔的列表。在Win32中,它是一个以分号分隔的列表。
  • / u :此标志表示只应在从Win32调用WSL时包含该值。在下面的示例中,我们从cmd设置FORWSL,它将显示在WSL中。
  • / w :此标志表示只应在从WSL调用Win32时包含该值。

现在,如果你设置如下的环境

WSLENV=ANDROID_HOME/p

上面说ANDROID_HOME应该在WSL和Windows之间共享,/p表示它应该自动共享。建议这样做是为了让所有内容保持同步