android - 如何解决ANDROID_SDK_ROOT=undefined(推荐设置)和ANDROID_HOME=undefined(DEPRECATED)

标签 android cordova ionic-framework

有人可以展示如何解决与此相关的问题吗

ionic Cordova 构建安卓

我已经尝试过此 link 中提供的建议但问题仍然存在。

cordova.cmd build android Checking Java JDK and Android SDK versions ANDROID_SDK_ROOT=undefined (recommended setting) ANDROID_HOME=undefined (DEPRECATED) Failed to find 'JAVA_HOME' environment variable. Try setting it manually. [ERROR] An error occurred while running subprocess cordova.

    cordova.cmd build android exited with exit code 1.

    Re-running this command with the --verbose flag may provide more information.

最佳答案

要使用 cordova,您需要 Java、Android SDK 和 Gradle。如果您查看源文件,主要是 platforms/android/cordova/lib/check_reqs.js,您可以找到打印出您收到的消息的确切代码。 Cordova 检查您在系统上设置的环境变量。

对于 Java,您需要 JAVA_HOME 变量,如果您使用的是 linux,则可以通过在终端上键入 echo $JAVA_HOME 来检查变量。如果变量没有被打印出来,你必须手动设置它。安装 java 8 并在您的终端中使用 export JAVA_HOME="path_to_java" 进行设置。我的路径是 /usr/lib/jvm/java-8-openjdk-amd64/

您需要对 ANDROID_HOME 执行相同的操作。当您安装 Android Studio 时,您将安装 Android SDK。对我来说,它在我的主目录 /home/username/Android/Sdk 中。

对于 Gradle,您不需要设置环境变量。您可以使用 sudo apt install gradle 安装它。

请注意,一旦您关闭终端,您添加的所有变量都将消失。您可以通过将 export 命令添加到您的 ~/.profile 文件并重新启动您的系统来使它们永久化。您也可以在终端中键入 source ~/.profile 以将变量加载到该终端实例中。

您可能会收到有关 Android 许可证的错误消息。只需键入 path_to_your_sdk/sdk/tools/bin/sdkmanager --licenses 并接受所有许可证。

如果您安装了多个 Java 版本,Cordova 可能会给您带来麻烦,因为它不仅检查 JAVA_HOME 变量,即使它只需要那个位置。如果您确信您的 JAVA_HOME 设置正确,您可以注释掉第 370-375 行(当以下 if 语句为 true !String(values[0 ]).startsWith('1.8.')) 在 platforms/android/cordova/lib/check_reqs.js 中,Cordova 可以正常工作。

关于android - 如何解决ANDROID_SDK_ROOT=undefined(推荐设置)和ANDROID_HOME=undefined(DEPRECATED),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66864889/

相关文章:

java - 如何使用 Retrofit 将 JSON 正文添加到我的发布请求中?

java - 当另一个声音在 android studio 中播放时停止播放声音

android - 这个 Kotlin FileFilter 有什么问题?

Cordova 插件替代 <source-file> 标签来复制整个目录内容

javascript - ionic - `slot` 属性已弃用 - eslint-plugin-vue

java - 如何从另一个 fragment 更改 fragment 并将其应用到 main_content 布局上?

ios - 如何使用Cordova从iPhone上传pdf文件?

angularjs - 为什么在使用 collection-repeat 而不是 ng-repeat 时不显示列表

ionic-framework - 在 Ionic 2 中添加自定义图标

php - 在 Symfony2 中创建移动应用程序