科尔多瓦平台添加 android 在列出 Android 目标时不起作用

Posted

技术标签:

【中文标题】科尔多瓦平台添加 android 在列出 Android 目标时不起作用【英文标题】:cordova platform add android not working while listing Android targets 【发布时间】:2013-12-17 21:28:42 【问题描述】:

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

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

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

请帮帮我! :D

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

【问题讨论】:

您是否安装并正确配置了Ant? 【参考方案1】:

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

然后您必须将这些目录添加到您的PATH 系统变量中:

背景:

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

那么你必须创建两个系统变量:

    ANDROID_HOMEc:\sdk\androidANT_HOMEc:\tools\apache-ant

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

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

注意:对于使用 Linux 的人来说,说明略有不同。

更多文档可用here。

【讨论】:

天啊,我不明白为什么开源项目团队很难花一些精力来编写好的文档。它总是在一个相当好的产品和它的用户之间造成很大的差距,让用户四处摸索,浪费时间,直到有经验的人有所启发。 我理解你。我认为这些年来,开放软件项目的质量有所下降。这可能是最新的时尚:每天,github 下都有 5 个星标项目,每个人似乎都在抢夺最后一个受欢迎的项目。但是,在我们的案例(Cordova)中,我认为这是一个规划问题。他们必须快速发布一些新版本来解决 Android Kit Kat 的一些问题。我想团队想要稳定这个版本的主要目标,然后,他们可能会完成文档部分...... 我同意@Marshal 的观点,对于平庸的程序员来说,这接近于火箭科学。我真的不明白为什么普通人有大问题的文档(如电话间隙)存在差距:( 我遇到了同样的错误。但是我的所有变量都已定义,您可以在此处看到。 ***.com/questions/23422961/… 如果我记得关闭并重新打开命令提示符窗口,我会第一次使用它。在我意识到之前浪费了大约 15 分钟。【参考方案2】:

对于那些选择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/YOUR_USERNAME directory”时,我们将使用$HOME 表示法。

设置 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"

设置 Ant

就像使用 Android SDK 一样,下载一个存档并将其解压缩到您的主目录。然后将这些添加到您的.bashrc

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

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

应用更改

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

结束

最后,你会得到:

    您的主目录中有两个目录 - antandroid-bundle

    几行,添加到您的.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"
    

【讨论】:

澄清:这应该准备一个系统不需要 PATH 环境 mods 用于 ant:sudo apt-get install ant ant-contrib ant-optional ant-gcj @deinerson1 但您确定 Debian/Ubuntu 存储库包含正确的或事件 必需的 Ant 版本吗? ;) 此命令显示 ubuntu/debian 存储库中的版本以帮助验证兼容性(版本:1.9.2-1,截至此评论):apt-cache show ant @deinerson1 不同的 Ubuntu 版本使用不同的软件包集。因此,例如,Ubuntu 10.04 LTS 不会在其存储库中包含最新版本的 Ant。我统一了这个过程。啊,是的,gcj 不是oracle-java7 或其他什么。这些是不同的 Java 编译器 ;) 我爱你。你拯救了我的一天【参考方案3】:

从您的 adt\sdk\tools 文件夹运行“android”命令并安装最新的工具和 SDK。还要确保您的 PATH 具有正确的变量。

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

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

ANT_HOME (ant location\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 Development

【讨论】:

Windows 平台的简洁解决方案。太好了! 这个答案在 LINUX 中给了我提示,因为我也可以运行 android 命令来打开 Android SDK 管理器并安装 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。之后一切都安装好了。【参考方案4】:

我不确定这是否是您的问题,但是当科尔多瓦库缓存被损坏的东西污染时,我遇到了类似的错误。要修复它,您只需删除cordova缓存,下次使用'cordova'时它会自动重新填充。

在 OS X 上,这个目录是 ~/.cordova。在 Windows 上,我假设它仍然是用户主目录中的 .cordova。

【讨论】:

【参考方案5】:

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

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

大概在这个小问题得到解决之前,下一次 android sdk 的版本也需要更改。

【讨论】:

【参考方案6】:

即使完全按照说明设置了路径变量,我也遇到了同样的问题。经过多个文件后,我终于解决了。对我来说(Windows 7 企业版 64 位)我必须从 "C:\Users\.cordova\lib\android 修改 check_reqs.jscreate.js \cordova\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) + '"');

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

【讨论】:

【参考方案7】:

经过长期的斗争,在做了一次以上所有建议之后,我越来越绝望,我只是以管理员身份打开了我的 cmd。有效。我想在我拿到这台电脑之前,我只是太习惯于“sudo”了。

【讨论】:

【参考方案8】:

对于那些遇到这个问题的人,我添加了一些额外的有用的东西,在我的例子中,所有变量都正确配置了,但仍然无法添加 android 平台,我所做的是禁用我的 avast 防病毒和 puff!一切顺利,发生的事情是防病毒软件阻止了平台的创建。

对我来说同样重要的是重新启动电脑。 ;)

问候。

【讨论】:

Comodo 也一样... [>. 【参考方案9】:

我注意到 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 命令 shell 上运行“android”——但不能在 Cygwin shell 中运行。我需要添加“.bat”。)

没有“.bat”的“android”在 Cygwin shell 中失败,因为 android.exe 不存在(只有 .bat 存在)。将第 73 行更改为调用“android.bat list targets”将解决您的问题(或给出合理的错误消息)。

另一种解决方法是在 MS-DOS shell 而不是 Cygwin shell 中运行 cordova。

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

这个问题通常是因为没有为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 目录? $ which ant /usr/local/bin/ant $ ls /usr/local/bin/ant /usr/local/bin/ant $ ant -v Apache Ant(TM) 版本 1.9.4 编译于 2014 年 4 月 29 日 $ cordova - -版本 4.0.0【参考方案12】:

接受的答案很好,很中肯。

我遇到了另一个页面,其中的屏幕截图很好地解释了它。

您可以参考http://bealers.com/2014/06/phonegap-android-development-environment-for-windows/

【讨论】:

以上是关于科尔多瓦平台添加 android 在列出 Android 目标时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

科尔多瓦没有添加安卓平台

Ionic 3:更新 Cordova 等后无法构建 Android

无法更新任何插件,不是有效的科尔多瓦平台?

Ionic cordova - 在 Android Studio 中构建项目

Ionic + Angular - 平台添加 Android 错误 - 错误:无法获取平台 cordova-android@0.0.8

Cordova 在 Ubuntu 13.10 上运行失败