列出平台目标时,cordova平台添加android无法正常工作


76

当我想在我的phoneGap应用程序中添加一个android平台时遇到问题。当我执行命令cordova platform add android时,我在CLI中收到此消息:

Checking Android requirements... (Error: An error occurred while listing Android targets)

我已经尝试在path变量中添加我的android sdk位置。

请帮我 !:D

我在Windows 7 64位上工作,我使用android SDK安装了android API 17、18和19。我正在使用3.2 phoneGap版本。


您是否已安装Ant并正确配置了它?
Purus 2013年

Answers:


167

要工作,此cordova命令需要使用sdk/tools目录中的某些程序。您还需要安装apache ant

然后,您必须将以下目录添加到PATH系统变量中:

背景:

  • 假设您已将Android SDK安装到c:\sdk\android目录
  • 您已将Apache ant安装到该c:\tools\apache-ant目录

然后,您必须创建两个系统变量:

  1. ANDROID_HOME具有c:\sdk\android价值
  2. ANT_HOME具有c:\tools\apache-ant价值

最后,您必须修改PATH变量并将这两个变量添加到PATH'值的末尾:

;%PATH%\tools;%ANT_HOME%\bin;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

注意:对于使用Linux的用户,说明有所不同。

更多文档可在此处获得


66
哎呀,我不明白为什么开源项目团队很难为好的文档付出一些努力。它总是在相当不错的产品与其用户之间造成很大的差距,从而使用户感到困惑并浪费时间,直到有经验的人发现一些曙光。
元帅

4
我理解你。我认为这些年来,开放软件项目的质量已经下降。这也许是最新的时尚:每天,在github下有5个星标项目,每个人似乎都争先恐后地接受最后一个受欢迎的项目。但是,对于我们的案例(科尔多瓦),我认为这是一个计划问题。他们必须迅速发布一些新版本来解决AndroïdKit Kat的某些问题。我想团队希望将这个版本稳定在一个主要目标中,然后,他们可能会完成文档部分……
l.cotonea 2013年

我同意@Marshal的观点,对于一般的程序员而言,这与火箭科学很接近。我真的不明白为什么在文档(例如电话空缺)方面存在空白,这些普通人对:(
Cammy

我遇到了同样的错误。但是我的所有变量都已定义,您可以在这里看到。stackoverflow.com/questions/23422961/...
巴里斯Akkurt

2
如果我记得关闭并重新打开命令提示符窗口,那我将第一次使用此功能。在我意识到之前大约15分钟就浪费了。
0x6C77

42

对于那些选择Linux开发环境的人

要求

首先,您将需要一些入门知识。它们是:Android SDKApache Ant。当然,您将需要Java SDK安装(JDK)。

要使Android SDK适用于所有用户,您需要修改/etc/environment文件,然后重新启动PC。但是,如果您不希望采用这种方式,请跟我来,将您自己视为唯一的PC用户。并使用/home/YOUR_USERNAME/.bashrc文件进行编辑。

让我们记得一次回家的路,以防止排长队。将此添加到您的/home/YOUR_USERNAME/.bashrc

export HOME="/home/YOUR_USERNAME"

然后,$HOME当我们要说“ /home/YOUR_USERNAME directory”时,将使用表示法。

设置Android SDK

下载Android SDK归档文件并将其解压缩到某处。假设您的主目录是$HOME/adt-bundle/

将这些行添加到您的$HOME/.bashrc

export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"

设置蚂蚁

与Android SDK一样,下载档案并将其解压缩到您的主目录。然后将它们添加到您的.bashrc

export ANT_HOME="$HOME/ant"
export PATH="$PATH:$ANT_HOME/bin"

我已经通过安装了一个,apt-get因此这不会影响我的.bashrc

套用变更

要使这些更改生效,您应该在新的终端窗口中工作(更改打开),或者运行source ~/.bashrc以使更改在当前终端窗口中可用。

包起来

最后,您将获得:

  1. 主目录中的两个目录-antandroid-bundle
  2. 几行,添加到您的.bashrc

    export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
    export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
    export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"
    
    export ANT_HOME="$HOME/ant"
    export PATH="$PATH:$ANT_HOME/bin"
    

2
澄清:这应该为系统准备不需要ant的PATH环境mods:sudo apt-get install ant ant-contrib ant-optional ant-gcj
deinerson1 2014年

@ deinerson1,但是您确定Debian / Ubuntu仓库包含正确的,还是需要的Ant版本?;)
shybovycha 2014年

1
此命令在ubuntu / debian存储库中显示版本,以帮助验证兼容性(版本:1.9.2-1,截至本注释):apt-cache show ant
deinerson1 2014年

@ deinerson1不同的Ubuntu版本使用不同的软件包集。因此,例如,Ubuntu 10.04 LTS的存储库中将不包含最新版本的Ant。我统一了这个过程。啊,是的,gcj不是,oracle-java7还是什么。那些是不同的Java编译器;)
shybovycha 2014年

我爱你。你保存了我的一天
尤川豪2014年

21

从adt \ sdk \ tools文件夹中运行“ android”命令,然后安装最新的工具和SDK。另外,请确保您的PATH具有正确的变量。

为此,您将需要安装ANT,安装JAVA JDK和Android SDK

JAVA_HOME(C:\ Program Files \ Java \ jdk)

ANT_HOME({ant位置} \ apache \ apache-ant)

ANDROID_HOME({android sdk位置} \ android-sdk)

将它们添加到您的PATH变量中,例如%ANT_HOME%/ bin;%ANDROID_HOME%\ tools;%ANDROID_HOME%\ platform-tools;%JAVA_HOME%\ bin

关闭并重新打开您的cmd,然后再次运行命令。

PhoneGap / Cordova Android开发类似


3
Windows平台的简洁解决方案。大!
swdev 2014年

1
这个答案给了我LINUX的提示,因为我还可以运行android命令来打开Android SDK Manager并安装Andrid SDK Build-tools 19.0.2。在此之前,我还从他们的站点安装了Android SDK,并添加export PATH=${PATH}:/home/YOUR_USER_HERE/adt-bundle/sdk/platform-tools:/home/YOUR_USER_HERE/adt-bundle/sdk/tools~/.bash_profile。之后,一切都安装正确。
ziiweb 2014年

4

我不确定这是否是您的问题,但是当cordova库缓存被损坏时,我遇到了类似的错误。要解决此问题,您只需要删除cordova缓存,下次您使用“ cordova”时,它将自动重新填充。

在OS X上,此目录为〜/ .cordova。在Windows上,我认为您的用户主目录中仍然是.cordova。


4

答案是“以上所有”。按照环境变量所述进行操作,但是,也可以这样做:

C:\ Users {YOUR_NAME} .cordova \ lib \ android \ cordova \ 3.5.0 \ framework编辑project.properties文件,并将target = android-19更改为target = android-20。

大概在下一次移植android sdk时也需要更改此设置,直到解决此小问题为止。


3

即使完全按照说明设置了路径变量,我也遇到了同样的问题。经过多个文件后,我终于解决了。对我来说(Windows 7企业版64位),我不得不修改check_reqs.jscreate.js“C:\用户\ .cordova \ LIB \机器人\科尔多瓦\ 3.5.0 \ BIN \ LIB \”文件夹中包含绝对路径对于android.bat。我的Android SDK位于“ C:\ Android \ android-sdk”下。

在check_reqs.js中,我修改了

child_process.exec('android list targets', function(err, stdout, stderr) {

child_process.exec('C:\\Android\\android-sdk\\tools\\android.bat list targets', function(err, stdout, stderr) {

在create.js中,我修改了以下语句

return exec('android update project --subprojects --path "' + projectPath + '" --target ' + target_api + ' --library "' + path.relative(projectPath, targetFrameworkDir) + '"');

return exec('C:\\Android\\android-sdk\\tools\\android.bat update project --subprojects --path "' + projectPath + '" --target ' + target_api + ' --library "' + path.relative(projectPath, targetFrameworkDir) + '"');

也不要忘记绝对路径中的那些双“ \\”



2

对于那些遇到此问题的人,我添加了一些其他有用的东西,在我的情况下,正确配置了所有变量,这仍然无法添加android平台,而我确实禁用了我的avast防病毒软件和puff!一切顺利进行,发生的事情是防病毒软件阻止了平台的创建。

对我来说也很重要的是重启电脑。;)

问候。


对于Comodo ...... [>。<]
Jeffrey NicholsonCarré2014年

1

我注意到Cygwin / Windows 7的问题。问题出在Cygwin和MS-DOS Shell处理.bat文件的方式略有不同。

在“添加平台”期间,cordova调用“ android”:

C:\Users\xxx\.cordova\lib\android\cordova\3.4.0\bin\lib\check_reqs.js

它在哪里调用“ Android列表目标”(第73行)

“ android”应解析为/xx/android-sdk/tools/android.bat或xx:\ android-sdk \ tools \ android.bat。(事实上​​,确实可以,我可以在MS-DOS命令外壳上运行“ android”,但不能在Cygwin shell中运行。在那里,我需要添加“ .bat”。)

在Cygwin Shell中,不带“ .bat”的“ android”失败,因为android.exe不存在(仅.bat存在)。更改第73行以调用“ android.bat列表目标”将解决您的问题(或给出合理的错误消息)。

另一个解决方法是在而不是Cygwin外壳程序的MS-DOS外壳程序中运行cordova。


0

我们在这里有一个解决方案列表,所以我添加一个。在我尝试之前,这对我还不清楚。您应该将%ANT_HOME%\ bin;%ANDROID_HOME%\ tools;%ANDROID_HOME%\ platform-tools添加到USER PATH变量,而不要添加到System。系统PATH变量将自动连接USER PATH变量并将变量转换为其值。希望能帮助到别人。PS我的操作系统是赢7x64


0

通常由于未为Android SDK设置PATH变量而导致此问题。

export HOME="/home/yourname"
export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"
export ANT_HOME="$HOME/ant"
export PATH="$PATH:$ANT_HOME/bin"

我有这个并且仍然是同样的错误。我没有$ ANT_HOME,因为osx上没有bin目录?$其中ant / usr / local / bin / ant $ ls / usr / local / bin / ant / usr / local / bin / ant $ ant -v 2014年4月29日编译的Apache Ant(TM)版本1.9.4 $ cordova-版本4.0.0
mylord

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.