在 Linux 上构建适用于 Android 的 Ionic 应用程序失败,退出代码为 2:无法找到“ANDROID_HOME”

2024-03-25

我正在尝试在 Linux/Ubuntu 14.04 上为 Android 构建一个默认示例应用程序。

我在执行时收到标准错误消息sudo ionic 构建 android:

找不到“ANDROID_HOME”环境变量。尝试手动设置。

(请参阅下面的完整日志)

但如果我这样做

回声$ANDROID_HOME && 回声$JAVA_HOME && 回声$ANT_HOME

/home/user3123726/Android/Sdk

/usr/lib/jvm/java-8-oracle

/usr/bin/ant

并且命令 android 和 cordova 也可用。

  • Android SDK 与当前可用的所有平台目标一起安装(加上 Android SDK 工具、平台工具和构建工具)
  • npm 3.3.9 和 Node 4.2.2 已安装
  • Cordova 5.3.3 是通过 npm 安装的
  • Ionic 1.7.7 是通过 npm 安装的
  • 阿帕奇蚂蚁 1.9.3

ANDROID_HOME 也在 .bashrc 上定义:

导出 ANDROID_HOME=/home/user3123726/Android/Sdk

导出 PATH=${PATH}:/home/user3123726/Android/Sdk/platform-tools:/home/user3123726/Android/Sdk/tools

我不知道构建过程失败的原因是什么。如有任何帮助,我们将不胜感激 - 谢谢!

这里是 ionic 项目创建的完整日志(基本上是创建、添加平台和构建):

ionic 启动 myApp 选项卡

下载中:https://github.com/driftyco/ionic-app-base/archive/master.zip https://github.com/driftyco/ionic-app-base/archive/master.zip

[================================] 100% 0.0s

下载中:https://github.com/driftyco/ionic-starter-tabs/archive/master.zip https://github.com/driftyco/ionic-starter-tabs/archive/master.zip

[================================] 100% 0.0s

更新了挂钩 具有执行权限的目录更新Config.xml初始化 科尔多瓦项目

您的 Ionic 项目已准备就绪!一些快速提示:[...缩短]

cd myApp

sudo ionic 平台添加 android

更新hooks目录使其具有执行权限

下载默认离子资源

下载中:https://github.com/driftyco/ionic-default-resources/archive/master.zip https://github.com/driftyco/ionic-default-resources/archive/master.zip

[================================] 100% 0.0s

完成添加默认 Ionic 资源

添加平台图标:android

添加安卓项目...

为Android平台创建Cordova项目:

路径:平台/android

包:com.ionicframework.myapp809922

名称:我的应用程序

活动:主要活动

Android 目标:android-22

正在复制模板文件...

Android 项目创建于[电子邮件受保护] /cdn-cgi/l/email-protection

运行命令: /home/user3123726/testing/myApp/hooks/after_prepare/010_add_platform_class.js /home/user3123726/testing/myApp

添加到主体类:platform-android

将平台保存到 package.json 文件

sudo ionic 构建 android

运行命令:/home/user3123726/testing/myApp/hooks/after_prepare/010_add_platform_class.js /home/user3123726/testing/myApp

添加到主体类:platform-android

运行命令:/home/user3123726/testing/myApp/platforms/android/cordova/build

[错误:找不到“ANDROID_HOME”环境变量。尝试手动设置。

无法在“路径”中找到“android”命令。尝试更新您的“PATH”以包含有效 SDK 目录的路径。]

构建平台之一时出错:错误:/home/user3123726/testing/myApp/platforms/android/cordova/build:命令失败,退出代码 2

您可能没有构建此项目所需的环境或操作系统

错误:/home/user3123726/testing/myApp/platforms/android/cordova/build:命令失败,退出代码 2

在 ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:139:23)

在emitTwo (events.js:87:13)

在 ChildProcess.emit (events.js:172:7)

在 MaybeClose (内部/child_process.js:818:16)

在 Process.ChildProcess._handle.onexit (内部/child_process.js:211:5)


修复:

是权限问题

sudo chown -R $(whoami) /home/user3123726/.cordova

给予科尔多瓦权利

and did

ionic 添加平台 android

离子构建安卓

没有须藤;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Linux 上构建适用于 Android 的 Ionic 应用程序失败,退出代码为 2:无法找到“ANDROID_HOME” 的相关文章

  • 使用 Android L Notification.MediaStyle 添加终止播放按钮

    我想使用新的 Android L MediaStyle 模板创建媒体播放通知 现在 我成功地完成了上一个 播放 暂停 下一个等操作 通过使用addAction 但我找不到像中那样添加 关闭 按钮的方法Android 通知文档 http de
  • 带有工具栏和 TabLayout 的 ViewPager 高度错误

    我在 AppBarLayout 下方有一个 ViewPager 带有工具栏和 TabLayout 我无法理解为什么加载的片段的高度大于可用空间 即使没有如此大的元素 使选项卡可滚动 这是主要的布局 xml
  • Android中每10秒显示一次数据

    我必须每 10 秒后显示一些数据 谁能告诉我该怎么做 您还可以使用另一种方法按特定时间间隔更新 UI 以上两个选项都是正确的 但根据具体情况 您可以使用替代方法在特定时间间隔更新 UI 首先为 Handler 声明一个全局变量 用于从 Th
  • Android/iOS 上的相机远程快门如何工作?

    我最近在 Android iOS 上遇到了一个使用蓝牙的内置相机应用程序的远程快门 这是我找到的产品的示例链接 Link http www youtube com watch v cyVG76HDvh4 不是来打广告的 只是简单了解背后的技
  • 根据自定义适配器中的条件更改特定行的背景

    我试图根据从远程服务器上的数据库收到的标志来更改行的背景颜色 在我的代码中 我创建了一个名为 disable 的 ArrayList 其中包含所有已标记的位置 我想将禁用列表中的内容与我的 ListView 中的位置相匹配 我研究了几篇帖子
  • BackupAgent:“无法恢复包...”

    我已经实现了 BackupAgent 如下所述数据备份 http developer android com guide topics data backup html 注册了一个 API 密钥并在我的 Manifest 中声明了 Back
  • 如何使用 Retrofit 2 下载 pdf 文件

    我在下载带改造的 pdf 文件时遇到困难 我的代码生成了一个文件 但它的大小错误 并且当 pdf 打开时它是空白的 这就是我的 php web 服务返回 pdf 文件的方式 param Slim Slim app param String
  • GCM 条款和条件

    有谁知道在哪里可以找到有关哪些内容可以通过 GCM 通知发送以及哪些内容不可以发送的条款和条件 我似乎在任何地方都找不到任何文档 当您注册开设 Google API 帐户时 您会得到这些条款和条件 https developers goog
  • 以编程方式创建进度绘制

    我有一个场景 我需要有大量的进度条可绘制对象 我无法为所有这些创建 xml 资源 因为我希望用户选择一种颜色 然后用于动态创建可绘制对象 下面是 xml 中的一个这样的可绘制对象 我如何以编程方式创建这个精确的可绘制对象
  • 创建 Android 智能应用横幅

    Android 设备有类似 iOS 6 智能应用横幅的解决方案吗 这是智能应用横幅的代码 从 Chrome 44 Beta 开始 您可以在 Android 版 Chrome 中推送您的应用程序 您网站上的本机应用程序安装横幅 请看下面的答案
  • 使用自定义布局时 AlertDialog 按钮不可见

    我想要在弹出窗口中使用自定义布局 所以我使用了警报对话框 由于弹出窗口中的子视图数量是动态决定的 所以我使用了 ScrollView 现在 扭曲来了 当没有剩余空间并且滚动开始运行时 正向和负向按钮将变得不可见 下面是代码 AlertDia
  • Android - 如何创建布局选择器(如 ImageButton 选择器)

    我有一个 ImageButton 和一个包裹该按钮的 LinearLayout 如下所示
  • 使用 Android 将文件上传到 Django Web 服务

    我正在开发一个与 Django 后端交互的 Android 应用程序 我已经使用 mod wsgi 部署了 Web 服务 并且有许多 Web 服务调用可以工作并且已经过测试 所以我知道一切都应该工作 所有其他呼叫都工作正常 这是我在Andr
  • Android 中的 GPS 超时

    在黑莓中 我们使用超时来获取位置 这样如果它在这么长时间内没有重新调整位置 我们就会知道 但是在Android中 没有超时的概念 任何人都可以告诉我们替代方案 我们可以发现 在这么长时间之后 GPS没有位置更新 您可以使用两个线程来实现此超
  • 按下后退按钮时停止 Fragments 中的 AsyncTask

    我有一个托管片段的活动 按下按钮会通过 FragmentTransaction 从片段 A 转到片段 B 并将其添加到返回堆栈中 现在片段 B 有一个 AsyncTask 实现 它从 sdcard 加载图像并在加载图像时将其发布 如果我按
  • 字符串包含相同的字符但仍然不同[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 txt 文件并使用每个句子作为团队的名称 同时使用该名称查找另一个 txt 文件以获取其内容 所有 txt 文件都位于我的资产文件夹的根目录中 第一个 txt 文件工作正常 我使用assetm
  • android:如何将图像添加到相册

    任何人都可以分享代码 或向我指出 Android 示例代码 来帮助我将图像添加到媒体商店 图库 中的相册中 在我的应用程序中 我从服务器下载图像 并使用相机 通过 Intent 拍摄新图像 我想将这些图像组织在特定于应用程序的相册中 类似于
  • pytube 在 Android 中传输视频所需的时间太长

    我在用pytube在 Android 中流式传输视频 借助chaquopy 视频文件 py from pytube import YouTube def video link yt YouTube f https www youtube c
  • Android:从 Android Java 源代码创建 UML [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以从我的 Java Android 源代码自动创建 Uml 的程序 我测试过ArgoU
  • 执行选项卡切换时避免重新创建相同的视图

    目前 我有 2Fragments 可通过以下方式切换ActionBar s tab getSupportActionBar setNavigationMode ActionBar NAVIGATION MODE TABS ActionBar

随机推荐

  • 雪花中有保存或加载工作表的选项吗?

    雪花中有保存或加载工作表的选项吗 或者将工作表下载到本地并从本地加载 我的意思不是通过剪贴板将其粘贴到某些文本编辑器并保存这样的选项 Snowflake 会自动保存您的工作表 您还可以将脚本从本地加载到工作表 但是无法下载工作表 Saved
  • QOpenGLWidget显示黑屏

    我尝试了此处描述的 QOpenGLWidget 示例 https stackoverflow com a 31524956 4564882 https stackoverflow com a 31524956 4564882 但我只得到一个
  • 使用IDLE时的工作目录是什么?

    所以 我正在学习 Python 想创建一个简单的脚本来从互联网下载文件 然后将其写入文件 但是 我正在使用 IDLE 并且不知道 IDLE 中的工作目录是什么或如何更改它 如果我不知道工作目录或如何更改它 如何在 IDLE 中执行文件系统操
  • 如何识别“hw.machine”标识符可靠?

    我正在寻找最官方的来源来完成 维护此方法 NSString platformString NSString platform self platform if platform isEqualToString iPhone1 1 retur
  • 如何获取 Woocommerce 电子邮件通知中的 cookie 值?

    我正在使用 php cookie 从插件检索 woocommerce 感谢页面和客户订单详细信息页面的值 它在感谢页面上工作正常 但没有在电子邮件订单详细信息页面上打印任何内容 我该如何解决此问题 我尝试过使用 php 会话获取值 它仅打印
  • itextsharp - 阅读 1 列(第 1 页)和 2 列(第 2 页)的 PDF 时出现问题

    当打开首页上只有一列而其他页面上有超过一列的 PDF 文件时 我的下面的代码丢失了 有人可以告诉我我做错了什么吗 下面是我的代码 PdfReader pdfreader new PdfReader pathNmArq ITextExtrac
  • 如何在 Paw 中执行并发 HTTP 请求?

    在 Paw 中 如果我有一个长时间运行的请求并尝试调用另一个请求 则会出现一个对话框 其中显示Stop request A request is currently running 与选项Cancel Stop and Stop Send
  • 重新连接到网络后如何获取有效的 Firebase appcheck 令牌?

    我在我的 Android 应用程序中使用 Firebase appcheck 它工作得很好 只是如果我在飞行模式下启动应用程序然后禁用飞行模式 即模拟在没有网络连接的情况下打开应用程序 然后获得网络连接 它总是会失败 当我没有连接时 我会反
  • 使用 ARMAResult.predict() 函数的正确方法

    根据这个问题如何使用 statsmodels 和 Python 获得 AR 模型中的常数项 https stackoverflow com questions 24172454 how to get constant term in ar
  • 如何在 macOS 上更改 sourcetree 中 github 帐户的用户名密码?

    我正在使用 SourceTree 并拥有 2 个 GitHub 帐户 我连接并将我的提交推送给其中之一 第一次 SourceTree 要求我输入密码 但是当我想推送到我的其他 GitHub 帐户时 它不会要求我输入密码 只是显示此错误 我找
  • 列,宽度参数不起作用

    我在工作中运行 REHL7column V at column from util linux 2 23 2 我有 csv 文件 其中包含一些带有长字符串的列 我想将 csv 作为表格查看 并限制列宽 因为我 通常对抽查长字符串不感兴趣 c
  • 如何使用 zlib 压缩字符串并恢复字符串?

    我正在尝试利用 Zlib 进行文本压缩 例如我有一个字符串T blah blah blah blah 我需要压缩这个字符串 我在用S zlib compress T 来压缩它 现在我想要的是得到非二进制形式S这样我就可以解压T但在不同的程序
  • 从另一个应用程序中自动安装/卸载应用程序

    我正在开发 Android 设备管理服务 其功能之一是指定应在服务的注册设备上安装哪些应用程序 该场景是 经理将企业应用程序上传到该服务 以便在其员工的 Android 设备上使用 然后 他要求服务部署该应用程序 该服务与设备上预安装的应用
  • 手机关机和开机后,无声通知如何表现

    我有一个应用程序尝试在某些情况下使用静默通知来获取用户的位置 我能够向手机发送静默通知 并能够运行后台获取并将位置返回到网络服务 比较静默通知的用户负载 当应用程序处于后台 挂起模式时 我正在执行一些操作 启动位置管理器并从委托方法中获取位
  • 使用 Bootstrap 进行电子邮件模板设计[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我必须创建一个响应式电子邮件模板设计 我已经设计了一段时间 但从未有机会创建电子邮件模板 我可以使用 Bootstrap 创建电子邮件
  • 从不同组中选择的背包

    我对背包问题有一个变体 我正在努力寻找有效的解决方案 假设您有多组项目 每个组可以有任意数量的物品 每个物品都有一个值和重量 问题是找到总价值最大 重量 也就是说 想象一下你有数百种物品可供选择 但你必须带一份三明治 一份饮料 一份零食 一
  • 如何在 Bash 中将空格与正则表达式匹配?

    我希望下面的代码会回显 是 但事实并非如此 由于某种原因 它与单引号不匹配 为什么 str templateUrl regexp templateUrl s if str regexp then echo yes else echo no
  • 我们应该使用 Material-UI 和 React [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在尝试在react中设计一个登录页面并找到了material ui 现在的问题是应该使用Material UI吗 另外 在下面的示例中 我如
  • 将 TAction 重命名为另一种形式

    我有 2 份表格 我想分享一份TActionManager并分配TAction s 第一种形式是主要形式 它包含TActionManager TAction标题为 行动 Form1 的主菜单将此操作和菜单项标题属性设置为 操作 A Form
  • 在 Linux 上构建适用于 Android 的 Ionic 应用程序失败,退出代码为 2:无法找到“ANDROID_HOME”

    我正在尝试在 Linux Ubuntu 14 04 上为 Android 构建一个默认示例应用程序 我在执行时收到标准错误消息sudo ionic 构建 android 找不到 ANDROID HOME 环境变量 尝试手动设置 请参阅下面的