没有设置ANDROID_HOME,并且你的PATH Phonegap中没有“android”命令

时间:2014-10-06 12:18:05

标签: android node.js cordova ionic-framework

我已经安装了android软件包,我已经配置了.bashrc文件中的所有内容,甚至当我在命令行中说android时...我正在获取android管理器..但是当我说离子平台添加android我总是得到错误作为& #34;错误:未设置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)

我可以知道如何解决此错误

5 个答案:

答案 0 :(得分: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,请删除现有的: -

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

如果您使用的是linux,请不要使用     须藤

在安装cordoava时,如果您收到任何错误,请运行以下命令

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

在创建离子应用程序并添加android作为平台时,请不要使用sudo命令。 Cordova在添加平台时在主文件夹中创建.cordova目录。在创建新的离子应用程序之前删除该目录。

下载android(4.4.2)后,使用以下命令创建一个android虚拟设备:

android avd

答案 1 :(得分:13)

我一直在努力解决这个问题(Ubuntu 14.04),我记得接受只是让cordova构建命令工作对我来说太难了:-)。我确信我的PATH是正确的(尝试root和用户等等)并尝试了我能找到的每个解决方案。

Stoicuta Alexandru On this page的评论为我解决了这个问题。我引用:

  

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

所以只需将我的android sdk放在home-folder中,然后(重要)命名为android-sdk就可以了。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

这是我修复的方式:

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

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

  3. 使用“离子启动app5”创建了新的应用程序 - 这是我以前用sudo做的主要问题

  4. 使用“ionic platform add android”

  5. 添加平台
  6. 使用“ionic run android”执行

  7. 请记住,如果从命令行运行“android”命令和“java -version”命令,则上面是完美的解决方案。如果你们需要我帮助,请告诉我。

答案 4 :(得分:-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)"