ANDROID_HOME未设置且“android”命令不在您的PATH中,这是Phonegap的问题。

8
我已经安装了Android Bundle,并在.bashrc文件中配置了所有内容,即使在命令行中输入android,我也能获得Android Manager。但是当我输入ionic platform add android时,总是出现错误:“Error: ANDROID_HOME未设置,“android”命令不在您的PATH中。 您必须满足这些条件之一。” 我尝试了很多方法,但问题没有解决。
我的平台:
Ubuntu 14.04 64位
.bashrc文件:
    export HOME="/home/system"
    export ANDROID_HOME="$HOME/adt-bundle-linux-x86_64-20140702/sdk/tools"
    export ANDROID_PLATFORM_TOOLS="$HOME/adt-bundle-linux-x86_64-20140702/sdk/platform-tools"
    export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"
    export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64"
    export ANT_HOME="/usr/share/ant"
    export PATH="$ANT_HOME/bin:$PATH"
    export ANDROID_HOME="/home/system/adt-bundle-linux-x86_64-20140702/sdk/tools"

执行时出现错误:
    system@system-H81M-S1:/usr/share/nginx/www/myApp# ionic platform add android
    npm http GET https://registry.npmjs.org/cordova-android/3.6.3
    npm http 200 https://registry.npmjs.org/cordova-android/3.6.3
    npm http GET https://registry.npmjs.org/cordova-android/-/cordova-android-3.6.3.tgz
    npm http 200 https://registry.npmjs.org/cordova-android/-/cordova-android-3.6.3.tgz
    Creating android project...

    /system/.cordova/lib/npm_cache/cordova-android/3.6.3/package/bin/node_modules/q/q.js:126
    throw e;
    ^
    Error: ANDROID_HOME is not set and "android" command not in your PATH. You must fulfill at least one of these conditions.
    at /system/.cordova/lib/npm_cache/cordova-android/3.6.3/package/bin/lib/check_reqs.js:158:19
    at _fulfilled (/system/.cordova/lib/npm_cache/cordova-android/3.6.3/package/bin/node_modules/q/q.js:798:54)
    at self.promiseDispatch.done (/system/.cordova/lib/npm_cache/cordova-android/3.6.3/package/bin/node_modules/q/q.js:827:30)
    at Promise.promise.promiseDispatch (/system/.cordova/lib/npm_cache/cordova-android/3.6.3/package/bin/node_modules/q/q.js:760:13)
    at /system/.cordova/lib/npm_cache/cordova-android/3.6.3/package/bin/node_modules/q/q.js:821:14
    at flush (/system/.cordova/lib/npm_cache/cordova-android/3.6.3/package/bin/node_modules/q/q.js:108:17)
    at process._tickCallback (node.js:419:13)
    at Function.Module.runMain (module.js:499:11)
    at startup (node.js:119:16)
    at node.js:906:3

    Error: /system/.cordova/lib/npm_cache/cordova-android/3.6.3/package/bin/
    create: Command failed with exit code 8 at ChildProcess.whenDone  (/usr/lib/node_modules/cordova/node_modules/
    cordova-lib/src/cordova/superspawn.js:135:23)
    at ChildProcess.emit (events.js:98:17)
    at maybeClose (child_process.js:756:16)
    at Process.ChildProcess._handle.onexit (child_process.js:823:5)

请问我怎样才能解决这个错误?


你是以root身份运行它吗?也许你可以输入 echo $ANDROID_HOME,然后会得到一个空字符串。 - Blackbelt
我只是以普通用户的身份运行。 - Dev
system@system-H81M-S1:~$ echo $ANDROID_HOME /home/system/adt-bundle-linux-x86_64-20140702/sdk/tools - Dev
system@system-H81M-S1:/usr/share/nginx/www/myApp# 看起来你是以 root 用户运行它。 - Blackbelt
@blackbelt 你好,我只能使用非root用户工作,即使我已经为非root用户配置了相同的设置。我也尝试过使用root用户,但无论如何都不起作用...有什么建议吗?一般来说,为什么会出现这种错误? - Dev
5个回答

13

我遇到了同样的问题,并已解决。

我认为这是最新版本的cordova与最新版本的android兼容性问题。 同时,您也可能遇到了android主目录路径的问题。

在.bashrc文件中

export HOME="/home/indranil"
export ANDROID_HOME="$HOME/software/adt-bundle-linux-x86_64-20140702/sdk"
export PATH="$HOME/software/adt-bundle-linux-x86_64-20140702/sdk/tools:$ANDROID_HOME/platform_tools:$PATH"

如果你正在使用旧版本,请尝试下载最新的Android SDK。并从你的Android管理器中下载Android 4.4.2(API 19)。

你可以使用最新的Cordova(4.0.0),但如果问题仍然存在,则使用Cordova(3.5.0-0.2.7)。如果你想升级或降级Cordova,请使用以下命令删除现有的Cordova:

npm uninstall -g cordova  (If linux use sudo npm uninstall -g cordova)

如果您正在使用Linux,请在安装Cordova时不要使用sudo命令。如果您遇到任何错误,请运行以下命令。

sudo chown -R `whoami` ~/.npm
sudo chown -R `whoami` /usr/local/lib/node_modules
sudo chown -R `whoami` /usr/local

然后在不使用sudo的情况下安装cordova

npm install -g cordova@3.5.0-0.2.7

在创建ionic应用并添加Android平台时,请勿使用sudo命令。 Cordova在添加平台时会在主目录中创建一个.cordova目录。在创建新的Ionic应用程序之前,请删除该目录。

在下载Android(4.4.2)后,可以使用以下命令创建Android虚拟设备:

android avd

13

我也曾经为此苦苦挣扎(Ubuntu 14.04),我记得我认为让 cordova 命令正常工作太难了 :-)。 我确定我的 PATH 路径是正确的(尝试过 root 和 user 等等),并尝试了我能找到的每一种解决方案。

Stoicuta Alexandru 在这个页面上的评论解决了我的问题。我引用:

如果未设置 ANDROID_HOME,cordova 将在 home/android-sdk 中搜索它。

所以只需将我的 Android SDK 放在 home 文件夹中(重要的是)并将其命名为 android-sdk 即可解决问题。

希望能为一些人节省时间...


很奇怪,做完这个之后我还得执行 'export ANDROID_HOME="/home/android-sdk' ... 至少现在它能用了!几个小时后... - Jason Silver

0

在我的情况下,我首先创建了ionic应用程序并使用SUDO运行其他ionic命令;这就是为什么它不起作用的原因,因为sudo使用root配置文件。

这是我如何解决的:

  1. 删除/home/user1/.cordova(将user1替换为您的用户名) 我使用“sudo rm”命令删除文件夹及其所有内容

  2. 我删除了/home/user1/tmp文件夹,以便再次运行cordova时,它会使用当前用户的适当权限创建新的tmp文件夹

  3. 使用“ionic start app5”创建新应用程序-这是主要问题,因为我以前是使用sudo进行操作的

  4. 使用“ionic platform add android”添加平台

  5. 使用“ionic run android”执行

请记住,如果您可以从命令行运行“android”命令和“java-version”命令,则上述是完美的解决方案。如果您需要任何帮助,请告诉我。


如果你无法执行Android和Java命令,请告诉我,我会帮你解决这个问题。 - Mr Megamind

0

我曾经遇到过同样的问题,但是我找到了一种替代方法,即使用Phonegap Developer App。您可以将其安装到模拟器中并使用它。


-1

在经历了多天的问题后,我按照上面的指示,在我的MAC上设置了我的.bash_profile文件如下:

#====================================================
export ANT_HOME=/usr/local/Cellar/ant/1.9.4/bin/ant
#
export HOME="/Users/User"
export ANDROID_HOME="$HOME/Downloads/Developer/adt-bundle-mac-x86_64-20140702/sdk"
export PATH="$HOME/Downloads/Developer/adt-bundle-mac-x86_64-20140702/sdk/tools:$ANDROID_HOME/platform_tools:$PATH"
#
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=${PATH}
#
export PATH=${PATH}:/Users/User/Downloads/Developer/adt-bundle-mac-x86_64-20140702/sdk/platform-tools:/Users/User/Downloads/Developer/adt-bundle-mac-x86_64-20140702/sdk/tools:/Users/User/Downloads/Developer/adt-bundle-mac-x86_64-20140702/sdk/build-tools/android-4.4W
#
NPM_PACKAGES="${HOME}/.npm-packages"
PATH="$NPM_PACKAGES/bin:$PATH"
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
#
# Unset manpath so we can inherit from /etc/manpath via the manpath
# command
unset MANPATH # delete if you already modified MANPATH elsewhere in your config
MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接