【问题标题】:Cordova: Android SDK not found. Make sure that it is installed. If it is not at the default location, set the ANDROID_HOME environment variableCordova:未找到 Android SDK。确保已安装。如果不在默认位置,请设置 ANDROID_HOME 环境变量
【发布时间】:2017-03-07 10:04:57
【问题描述】:

我在使用 Cordova 构建 android 时遇到问题,当我执行 cordova build android 时,我收到此错误:

Error: Android SDK not found. Make sure that it is installed. If it is not at the default location, set the ANDROID_HOME environment variable.

我必须这样做来修复它:

sudo nano  ~/.bash_profile

并添加这一行:

export PATH=${PATH}:/Users/myname/Library/Android/sdk/platform-tools:/Users/myname/Library/Android/sdk/tools

然后这个:

source ~/.bash_profile

但我在构建时再次遇到该错误,我该如何解决?

更新:

这是我在 bash 中添加的行:

export PATH=${PATH}:/Users/myname/Library/Android/sdk/platform-tools:/Users/myname/Library/Android/sdk/tools
export ANDROID_HOME=/Users/myname/Library/Android/sdk

【问题讨论】:

  • 你更新了PATH,但ANDROID_HOME在哪里?
  • 我更新了我的问题
  • echo $ANDROID_HOME 有效吗?你设置了 Android Studio 还是只设置了 SDK?
  • @suraj echo $ANDROID_HOME 的结果是这样的:/Users/piero/Library/Android/sdk 所以我觉得是对的
  • @suraj 不,同样的错误

标签: android cordova


【解决方案1】:

最近的Android SDK tools 删除了android 命令。

$ android -v
The android command is no longer available.
For manual SDK and AVD management, please use Android Studio.
For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager

cordova 是变化的幕后推手,似乎有人正在努力:https://issues.apache.org/jira/browse/CB-12554

您还可以将工具降级到 android 仍然可用的版本。

不过,我找到了一种无需降级 SDK 工具即可运行 Android 应用的方法。我会 (1) 运行 cordova prepare,然后 (2) 从 Android Studio 运行我需要的命令。在我的情况下,在模拟器上运行它就足够了。

更新:问题CB-12554 现已解决,并随cordova-android@6.2.0 版本一起发布。

更新:已经完成了几个相关的后续补丁,最新版本是cordova-android@6.2.3。运行cordova platform rm android; cordova platform add android@6.2.3 解决问题。

【讨论】:

  • 感谢您的确认。我觉得自己像个白痴,但我找不到以前的 SDK 版本保存在哪里。如果我发现任何东西,当然会继续搜索并在这里报告。另外,较旧的 SDK 是否可以与最新版本的 Android Studio 一起使用?我一直在使用 Android Studio 为应用商店准备我们的 Cordova 版本。
  • 为了节省其他人的时间,我做了很多搜索,但似乎不再提供以前版本的 Android Studio。这个稳定的频道 (tools.android.com/download/studio/stable) 现在已经过时了。从官方下载页面上列出的下载链接中获取部分路径会导致 404(developer.android.com/studio/index.html#downloads)。我在任何地方都找不到以前版本的工具。我们现在可能会陷入停滞状态。
  • @Rjak 我更新了我的答案,但您可能可以运行cordova prepare,它将在/platforms/android 中设置所有必需的文件,然后运行一个Android 命令,就好像它是一个纯Android 应用程序一样。它对我有用。
  • 我仍然收到此错误。我在科尔多瓦 6.5.0 上。我认为问题没有得到解决。
  • @clavio 版本号6.2指的是cordova-android平台的版本(你可以通过运行:cordova platform ls来检查你当前的版本)。 6.2.1 最近发布。查看Cordova Android 6.2.1 Released! 了解更多信息以及如何更新
【解决方案2】:

对我来说这个工作,首先检查你的cordova android版本

cordova platform version android

它向我显示 5.0,然后通过此命令升级版本

cordova platform update android

【讨论】:

  • 重要提示:您还应该有该版本对应的android sdk
  • 我不得不在cordova platform rm android & cordova platform add android
【解决方案3】:

TL;DR 在某些情况下,即使你已经成功添加了android sdk到你的路径问题仍然存在,原因与你的Androidtools/文件夹版本有关,目前android命令已经不支持了但命令ionic cordova build android仍然需要,那么你应该下载一个旧的。

既然您知道问题出在哪里,让我们进入解决方案:

  1. 根据你的平台下载一个旧的sdk工具版本Mac,Windows,Linux。
  2. 将 Mac 上的 /Users/username/Library/Android/sdk 或 Windows 上的 C:\Users\[account]\AppData\Local\Android\sdk 或 Linux 上的 ~/Android/Sdk 中的当前 tools/ 文件夹替换为下载的tools/ 文件夹。
  3. 重新启动您的命令行并开心!

【讨论】:

  • 为什么在世界上,这在文档中找不到?!这应该贴在整个科尔多瓦文档中。非常感谢。
  • 你是宝石人!经过几个小时的疯狂,我终于降落在这里。
【解决方案4】:

@Rjak 这里是用于降级 SDK 版本的manual,其中包含旧 SDK 版本的有效链接。在降级到工具 v25.2.5 和平台工具到 v25.0.3 构建成功后,它对我有同样的问题

【讨论】:

【解决方案5】:

正如其他人所说,这是因为不推荐使用 android 命令:

C:\>安卓 ****************************************************** ************************ “android”命令已弃用。 如需手动 SDK、AVD 和项目管理,请使用 Android Studio。 对于命令行工具,使用 tools\bin\sdkmanager.bat 和工具\bin\avdmanager.bat ****************************************************** ************************

就我而言,我设法修复它,更改捆绑在 sdk 中的“工具”文件夹中的较新的 android.bat。

只需在sdk/tools/android.bat 中更改此行:

从此:(第~20行)

set avd_objects=;avd;target;device;

收件人:

set avd_objects=;avd;targets;device;

从此:(第 ~37 行)

echo android list target

收件人:

echo android list targets

解释:cordova build.bat 最终会调用 check_reqs.js 脚本,这就是验证完成的地方。如果您查找实际的错误文本,则表明该脚本正在尝试调用“android list targets --compact”命令,我认为这是较旧的方法。

【讨论】:

    【解决方案6】:

    更新到新的Android包以解决错误-

    cordova platform remove android
    cordova platform add android
    cordova build android --release
    

    【讨论】:

      【解决方案7】:

      在我的情况下,我通过授予 android 可执行文件适当的权限解决了这个问题。

      我正在运行 Jenkins 的 android build。所以当我下载 android SDK 时,在 /usr/local/android-sdk/tools/ 我看到了 android 可执行文件。该文件的权限是 root 因为在 Jenkins 服务器(ubuntu 服务器)中我以 root 用户身份安装了 android-sdk。

      当我运行作业时,我收到一个错误 “未找到Android SDK。确保已安装。如果不在默认位置,请设置ANDROID_HOME 环境变量。”

      但 ANDROID_HOME 设置了正确的路径,并且 Android-SDK 也存在。然后我检查权限,下面是我所做的事情,并授予了整个工具文件夹的权限。

      1. cd /usr/local/android-sdk/tools
      2. ls -lt(当你运行这个命令你会看到android权限为root:root)
      3. chown jenkins:jenkins android
      4. 否则,您可以访问“/usr/local/android-sdk”位置,然后运行命令“chown jenkins:jenkins -R tools/”,授予 jenkins:jenkins 对工具文件夹中所有文件的权限。
      5. 我以 jenkins 用户身份运行,但如果您以其他用户身份运行构建,则使用该用户名。

      【讨论】:

        【解决方案8】:

        我解决了卸载 Android Studio 并按照本指南安装 CLI SDK 管理器的问题:

        https://guides.codepath.com/android/Installing-Android-SDK-Tools

        【讨论】:

        • 但这不是最优解
        【解决方案9】:

        在我的情况下,这是一个场景

        1.我有一个SDK 平台工具版本 23

        2.我已将 Android 平台添加到 My Cordova 项目中

        3. 在我将 SDK 更新到 26

        之前它可以正常工作

        4.更新SDK后报同样的错误

        Cordova:未找到 Android SDK。确保它已安装。如果它 不在默认位置,设置ANDROID_HOME环境 变量

        1. 我刚刚通过在我的项目中删除和添加 Android 平台解决了这个问题

          cordova 平台移除 android

          cordova平台添加android

        2. 现在可以正常使用了 :)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-27
          • 2020-07-04
          • 1970-01-01
          • 1970-01-01
          • 2017-10-26
          • 2019-10-20
          • 1970-01-01
          相关资源
          最近更新 更多