Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未能找到';安卓家庭';Windows 10 Linux子系统中的环境变量_Android_Cordova_Ionic Framework - Fatal编程技术网

Android 未能找到';安卓家庭';Windows 10 Linux子系统中的环境变量

Android 未能找到';安卓家庭';Windows 10 Linux子系统中的环境变量,android,cordova,ionic-framework,Android,Cordova,Ionic Framework,我正在尝试运行ionic cordova build--发布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.

我正在尝试运行ionic cordova build--发布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内容,如下所示:


但是当我回到bash/shell时,当我执行echo$ANDROID\u HOME时,它不会显示我设置的路径。我是否应该安装Android SDK for linux,并让它指向这一点?或者有没有什么方法可以让这个安卓主页路径指向我的C:/drive,因为我认为当我“m在linux子系统上

这是因为linux子系统环境变量与Windows环境变量分开,除了从Creator Update开始默认共享的路径

在这种情况下,您必须向linux环境变量添加
ANDROID\u HOME
。一种方法是将其添加到
~/.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"
现在,您将能够从linux子系统运行android sdk工具,尽管有一个警告,您必须为每个工具添加
.exe
。例如:

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

所以我写了一个很大的答案,不知为什么我找不到。我不知道它是否没有被发布或者发生了什么。所以,我们要写我之前写的东西

默认情况下,Windows和Windows子系统Linux不共享任何环境变量。但有一种方法可以在这两者之间自动共享变量,如下文所述

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

外壳环境

您可以更新
~/.bashrc
~/.bash\u配置文件
(以您使用的为准)并导出变量

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设置了WSL,它将显示在WSL中
  • /w:此标志指示仅当从WSL调用Win32时才应包含该值
现在,如果您像下面这样设置环境

WSLENV=ANDROID_HOME/p

上面说的
ANDROID\u HOME
应该在WSL和Windows之间共享,而
/p
表示应该自动共享。这是保持一切同步的推荐方法

添加环境变量后是否重新启动了cmd?是的,我在Windows 10上重新启动了“bash for ubuntu”,并重新启动了Webstorm(内置了bash)。然而,这两次echo$ANDROID\u HOME都是空白的,
。。任何答案都有帮助吗?可能是将windows环境变量部分(
C:\
)转换为linux路径(
\mnt\C
)的问题。有关更多信息,请参阅。我建议您要么切换到windows cmd或PowerShell,要么在WSL上重新安装Java。如果您有linux子系统,请参阅此链接,在子系统上安装linux版本的sdk不是更好吗?是的,这非常有效,尽管对我来说它在/mnt/c/Users//AppData/Local/Android/sdk中$
WSLENV=ANDROID_HOME/p