科尔多瓦 Android 要求失败:“找不到安装的 Gradle 版本”
Posted
技术标签:
【中文标题】科尔多瓦 Android 要求失败:“找不到安装的 Gradle 版本”【英文标题】:cordova Android requirements failed: "Could not find an installed version of Gradle" 【发布时间】:2017-09-07 11:37:36 【问题描述】:我正在尝试使用最新的工具构建一个 Cordova android 项目。我按照说明here:
$ cordova create myApp com.myCompany.myApp myApp
$ cd myApp
$ cordova platform add android@6.2.1 --save
$ cordova requirements android --verbose
但结果是:
Running command: android list targets
Command finished with error code 0: android list,targets
Requirements check results for android:
Java JDK: installed 1.8.0
Android SDK: installed true
Android target: installed android-25,android-23
Gradle: not installed
Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio
Error: CordovaError: Some of requirements check failed
at /usr/local/nodejs_next/lib/node_modules/cordova/src/cli.js:401:45
at _fulfilled (/usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:787:54)
at self.promiseDispatch.done (/usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:816:30)
at Promise.promise.promiseDispatch (/usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:749:13)
at /usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:557:44
at flush (/usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:108:17)
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)
它似乎无法找到 Gradle(不确定应该在哪里)。
我已经看到 reports Cordova 和 Android SDK 工具 25.3 的问题,但这似乎有所不同,我有 25.2.3(见下文)。
我有以下(在 CentOS 6.8 上):
$ cordova --version
6.5.0
$ node --version
v6.10.2
$ npm --version
3.10.10
$ java -version
openjdk version "1.8.0_121"
$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0
$ echo $ANDROID_HOME
/usr/local/android-sdk
# I installed the Android SDK from here
# https://developer.android.com/studio/index.html#downloads
# under "Get just the command line tools"
$ /usr/local/android-sdk/tools/bin/sdkmanager --list
Installed packages:
Path | Version | Description | Location
------- | ------- | ------- | -------
build-tools;23.0.3 | 23.0.3 | Android SDK Build-Tools 23.0.3 | build-tools/23.0.3/
build-tools;25.0.2 | 25.0.2 | Android SDK Build-Tools 25.0.2 | build-tools/25.0.2/
extras;android;m2repository | 47.0.0 | Android Support Repository | extras/android/m2repository/
extras;google;m2repository | 46 | Google Repository | extras/google/m2repository/
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/
platform-tools | 25.0.4 | Android SDK Platform-Tools | platform-tools/
platforms;android-23 | 3 | Android SDK Platform 23 | platforms/android-23/
platforms;android-25 | 3 | Android SDK Platform 25 | platforms/android-25/
tools | 25.2.3 | Android SDK Tools 25.2.3 | tools/
更新:
在 Cordova 或 Android 的文档中似乎没有提到任何地方,但如果您在没有 Android Studio 的情况下使用 Android 命令行工具,则必须手动安装 Gradle。一旦你这样做了,并且它在你的 PATH 上,这个错误就会消失。
另外一件让我困惑的事情:在旧版本的 Android SDK 工具中,tools/templates/gradle/wrapper/gradlew
中有一个 Gradle 包装脚本。这也可以用来安装 Gradle,但我发现手动安装它更容易。从最新版本开始,这似乎已被删除。
【问题讨论】:
【参考方案1】:带有 apt-get 的 linux 解决方案(例如:Ubuntu、Debian)
我也有类似的问题。我得到错误:
Error: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studi
但没有例外。我通过
在 Ubuntu 上解决了它sudo apt-get install gradle
我还发现了允许在 Ubuntu 中安装最新版本的 gradle 的命令。它仅在之前执行第一个命令时才有效(可能某些依赖项不正确)。
sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle-ppa
https://wtanaka.com/node/8079
如果不起作用,请尝试:
export PATH=$PATH:/opt/gradle/gradle-3.5/bin
更多信息:
https://askubuntu.com/questions/915980/package-is-installed-and-is-not-detected-gradle/915993#915993
CentOS
CentOS 的安装说明gradle
在此链接下
https://gist.github.com/parzonka/9371885
更新
现在我通过sdkman 安装 gradle,它类似于 node 的 nvm。
安装 sdkman
curl -s "https://get.sdkman.io" | bash
安装 gradle
sdk install gradle 4.0.2
【讨论】:
在 Debian 9 上完美运行 虽然这可行,但它会在系统中安装第二个 gradle,然后安装 OpenJDK。当 Android Studio 安装目录中已经有 gradle 和 JRE 时,无需将所有这些臃肿添加到系统中。 拯救我的一天!谢谢 :) 在 Linux Ubuntu 16.04 LTS 上完美运行 :)【参考方案2】:如果你安装了android studio,那么你可能想试试:
export PATH="$PATH:/home/<username>/android-studio/gradle/<gradle-4.0>/bin"
这解决了我的问题。
【讨论】:
这应该是公认的答案!没有引入额外的依赖和包 这应该是公认的答案。请注意,如果 Android Studio 以 root 身份安装,您可能需要向普通用户添加 gradle 可执行文件的 +x 权限。这是我的情况,目录是'/opt/android-studio/gradle/gradle-4.1/bin'。 This answer down 对我也有帮助。 在 Mac 上是这样的/Applications/Android Studio.app/Contents/gradle/gradle-4.4/bin/
。【参考方案3】:
对于 Windows:
-下载最新版本的 Gradle (https://gradle.org/releases)
-创建文件夹并解压文件(我使用C:\Program Files (x86)\gradle)
-复制包含bin目录的路径(C:\Program Files (x86)\gradle\bin)
-将路径 C:\Program Files (x86)\gradle\bin(在我的示例中)设置为“路径环境变量”
变量名“路径”和变量值“C:\Program Files (x86)\gradle\bin”:用户变量表和系统变量表
您可能需要重新打开“提示命令行”
要测试,请在提示符中输入 gradle。
【讨论】:
我还需要重新启动电脑,尽管它已添加到 PATH(并且在 cmd 中工作时) 对我产生影响的事情是你写的“for both”意味着在用户变量和系统变量中都有它 - 谢谢!【参考方案4】:我使用的是 Cordova 版本 7.0.1,而 Cordova android 版本是 6.2.3。我在执行 android build 时遇到了这个问题。我只使用 Cordova CLI,根本不使用 android studio。
此问题在 Cordova 正式修复之前的快速解决方法如下:
-
在platforms\android\cordova\lib文件夹下寻找
check_reqs.js
文件
在get_gradle_wrapper
函数中编辑androidStudioPath
变量空值检查的else部分如下:
现有代码:
else //OK, let's try to check for Gradle! return forgivingWhichSync('gradle');
修改后的代码:
else //OK, let's try to check for Gradle! var sdkDir = process.env['ANDROID_HOME']; return path.join(sdkDir, 'tools', 'templates', 'gradle', 'wrapper', 'gradlew');
注意:每次移除并重新添加 android 平台时都需要进行此更改
更新:在我的情况下,我的 android SDK 中已经有 gradle 包装器,我发现有必要显式安装 gradle。因此,我做了这个变通方法来尽量减少我的影响和努力
【讨论】:
我认为“模板”中的这个 gradlew 在最近的 Android SDK 中被删除了。因此,您可能只需要手动安装 gradle(请参阅我对原始帖子的更新)。 @JW 感谢您提供的信息。但我安装了最新版本的 android (SDK 25) 并且我有 gradle wrapper。不确定它是否是旧 sdk 的一部分。此外,此检查仅在最近的 Cordova 版本中失败。所以我现在用更简单的方法解决了这个问题,因为我觉得我的情况需要 gradle @JW。相应地更新了我的答案【参考方案5】:macOS
可以通过将下面的行添加到 ~/.bash_profile
在 Mac 上添加 Gradle。如果文件不存在,请使用touch ~/.bash_profile
。使用Command + Shift + .
可以使这个隐藏文件在Finder中可见
export PATH=$PATH:/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6/bin/
使用source ~/.bash_profile
将新路径直接加载到您当前的终端会话中。
【讨论】:
【参考方案6】:我按照这个 Qiita 教程解决了我的问题。
环境: Cordova 8.1.1
、Android Studio 3.2
、cordova-android 7.0.0
-
将 gradle PATH 设置为
.profile
文件。
-
导出设置。
-
现在构建 cordova 项目。
PS:如果cordova-android@7.0.0
导致构建错误,请将您的平台版本降级到6.3.0。
【讨论】:
【参考方案7】:为 linux (~mint) 用户扩展 https://***.com/users/5540715/surendra-shrestha 答案:
1. 安装Android Studio(许多工具已被命令行弃用,因此可能需要这样做)。假设您按照作者的说明进行操作,您的 Android Studio 将安装在 /usr/local/android-studio/ 中。在写这篇文章的时候,Android Studio 中的 gradle 版本是 3.2,用ls /usr/local/android-studio/gradle/
看你的。
2. 添加你的 gradle 命令,这可以通过扩展 PATH 来完成,正如@surendra-shrestha 建议的那样(应该写在 ~/.bashrc 中以保留 PATH 更改),添加别名 echo 'export alias gradle=/usr/local/android-studio/gradle/gradle-3.2/bin/gradle' >> ~/.bashrc && source ~/.bashrc
。或者创建一个符号链接:sudo ln -sn /usr/local/android-studio/gradle/gradle-3.2/bin/gradle /usr/bin/gradle
(这是我的选择)。
3.运行cordova requirements
检查一切正常,应该输出如下:
Requirements check results for android:
Java JDK: installed 1.8.0
Android SDK: installed true
Android target: installed android-26,android-25,android-24,android-23,android-22,android-21,android-19,Google Inc.:Google APIs:19
Gradle: installed /usr/local/android-studio/gradle/gradle-3.2/bin/gradle
【讨论】:
别名对我不起作用。符号链接完美无缺。谢谢! 你的tick成功了。在给予以下许可后。 sudo chmod -R 777 /home//android-studio/gradle/gradle-4.10.1/bin/gradle【参考方案8】:对我来说,问题是我的 android 版本仍在 6.1.2 上,与最新的 Android Studio 2.3.1 不兼容。
所以我所做的是运行
cordova platform rm android
cordova platform add android@6.2.1
【讨论】:
我专门添加了 6.2.1,所以这不是我的问题。 我的坏@JW。没有注意到您在问题中提到使用 6.2.1。【参考方案9】:Windows 10(安装了 Android Studio)
使用此解决方案,您不必在系统上多次安装 Gradle。
查找 Gradle 安装文件夹:转到 C:\Users\<username>\.gradle\wrapper\dists
。选择一个版本(在我的情况下为gradle-6.4-all
)。继续导航,直到到达“bin”文件夹。
将路径添加到Path环境变量:开始菜单>输入“编辑环境变量”。在下部(系统变量)中查找“路径”变量,然后单击“编辑”。然后将完整路径添加为新值,在我的情况下为C:\Users\<username>\.gradle\wrapper\dists\gradle-6.4-all\h8pi7famayzdg9sl28jayaip\gradle-6.4\bin
。不要忘记保存您的更改!
不要忘记重启所有终端(例如重启 VS Code)。之后,它就在我的电脑上运行了!
【讨论】:
【参考方案10】:回答OP的问题:
由于您在 Linux 上,您必须自己安装 gradle,可能在 this guide 之后,然后将 PATH
中的条目放入包含 gradle
可执行文件的文件夹中。
如果您有 Android Studio,Cordova 有一些代码可用于查找 gradle,但仅适用于 Mac 和 Windows,请参见此处:
https://github.com/apache/cordova-android/blob/e13e15d3e9aa4b9a61c6ece434e7c023fa5c3553/bin/templates/cordova/lib/check_reqs.js#L101-L132
与 OP 的问题半相关,因为我在 Windows 上。
升级到Android Studio 2.3.1
、cordova@6.5.0
、cordova-android@6.2.1
(node@4.7.3) 后,由于缺少目标 25 和 gradle,我遇到了构建问题。
X.Zhang 的评论解决了第一个问题(即将android
更改为avdmanager
),顺便说一句,它似乎是修复has landed on github 的承诺,所以cordova-android 应该在6.3.0 中修复它(但我没有测试)。
第二期如下:
问题原来是process.env['ProgramFiles']
的计算结果为'C:\\Program Files (x86)';
,而我在C:\\Program Files
中有Android Studio。
因此,快速破解方法是覆盖此值,或将 Android Studio 安装到其他位置。
// platforms/android/cordova/lib/check_reqs.js
module.exports.get_gradle_wrapper = function()
var androidStudioPath;
var i = 0;
var foundStudio = false;
var program_dir;
if (module.exports.isDarwin())
// ...
else if (module.exports.isWindows())
// console.log(process.env['ProgramFiles'])';
// add one of the lines below to have a quick fix...
// process.env['ProgramFiles'] = 'C:\\Program Files (x86)';
// process.env['ProgramFiles'] = 'C:\\Program Files';
var androidPath = path.join(process.env['ProgramFiles'], 'Android') + '/';
我不确定以稳健的方式处理两个文件夹的正确解决方法是什么(除了迭代两个文件夹)。
显然,这必须在 cordova-android 项目本身中修复;否则,无论何时您执行cordova platform rm
,您的修复都将消失。
我在 Cordova JIRA 上打开了票:
https://issues.apache.org/jira/browse/CB-12677
【讨论】:
我在 Windows 上也遇到了问题,因为我的 android studio 安装在不同的路径中。我更正了它,添加了一个连接:mklink /j "C:\Program Files\Android\Android Studio" "C:\myactualpathto\Android Studio"
【参考方案11】:
Mac 解决方案
示例问题,但我通过 brew 找到了解决方案。 1. 确保您安装了最新的 Android Studio。 2. 从 SDK 管理器确认您已安装所需的 SDK。 3.(可选)您也可以安装 AVD。 4. 安装 Homebrew。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
5。然后运行 brew update 以确保 Homebrew 是最新的。
brew update
6。运行 brew doctor 以确保一切安全
brew doctor
7。将 Homebrew 的位置添加到 .bash_profile 或 .zshrc 文件中的 $PATH。
export PATH="/usr/local/bin:$PATH"
8。如果您还没有安装 Node,请添加:
brew install node
9。 (可选)要测试您的 Node 和 npm 安装,请尝试安装 Grunt(可能会要求您使用 sudo 运行)
npm install -g grunt-cli
10。安装 Gradle
brew install gradle
运行:cordova run android --device
将您的设备连接到 Mac 上,此时您可以使用 gradle。
【讨论】:
【参考方案12】:试了很多次都没成功
-
我使用 macos 端口安装了 gradle
我在安装 gradle 后设置了 GRADLE_HOME 路径
我执行了 ::
sudo chmod -R a+rwx /Library/Java/JavaVirtualMachines *
sudo chmod -R a+rwx *
sudo chmod 777 your-gradle-path
它立即开始工作
【讨论】:
【参考方案13】:同样的问题,但在 Mac 上使用 brew 非常简单:
酿造更新 brew install gradle【讨论】:
【参考方案14】:Linux 解决方案,特别是 Ubuntu 20:04。在继续之前首先确保您已安装 Java:
1. java -version
2. sudo apt-get update
3. sudo apt-get install openjdk-8-jdk
打开 .bashrc
vim $HOME/.bashrc
设置 Java 环境变量。
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"
export JRE_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre"
访问Gradle's website 并确定您要安装的版本。将版本 6.5.1 替换为您要安装的版本号。
1. sudo apt-get update
2. cd /tmp && curl -L -O https://services.gradle.org/distributions/gradle-6.5.1-bin.zip
3. sudo mkdir /opt/gradle
4. sudo unzip -d /opt/gradle /tmp/gradle-6.5.1-bin.zip
要设置 Gradle 的环境变量,请使用 nano 或 vim 或 gedit 编辑器来创建新文件:
sudo vim /etc/profile.d/gradle.sh
将以下行添加到 gradle.sh
export GRADLE_HOME="/opt/gradle/gradle-6.5.1/"
export PATH=$GRADLE_HOME/bin:$PATH
运行以下命令以使 gradle.sh 可执行并使用您设置的环境变量更新您的 bash 终端,并检查已安装的版本。
1. sudo chmod +x /etc/profile.d/gradle.sh
3. source /etc/profile.d/gradle.sh
4. gradle -v
【讨论】:
【参考方案15】:也许你安装了最新的Android Studio 2.3.1,它把android list targets
的命令改成了avdmanager list targets
,所以有解决方法:
将路径<android-sdk>/tools/bin
添加到PATH
,这是针对MacOX 的。
export PATH="$PATH:/Users/<username>/Library/Android/sdk/tools/bin"
更改您的 cordova 项目代码<your-cordova-project>/platforms/android/cordova/lib/android_sdk.js
。
改变
module.exports.list_targets_with_android = function()
return superspawn.spawn('android', ['list', 'targets'])
到
module.exports.list_targets_with_android = function()
return superspawn.spawn('avdmanager', ['list', 'targets'])
【讨论】:
见上文——我没有使用 Android Studio;只是命令行工具。但是list_targets_with_android
函数有助于调试。由于权限问题,它没有正确调用android
,我已修复。我仍然有 Gradle 问题。【参考方案16】:
将您的科尔多瓦更新到最新版本,问题应该会得到解决。 如果问题未解决,请在环境变量中设置路径(如果是 Windows)。例子: 系统变量 值名称 GRADLE_HOME 值 D:\Android\Android Studio\gradle\gradle-4.3.1 (请用你的路径替换)
【讨论】:
【参考方案17】:在终端运行:
$ sudo apt-get update
$ sudo apt-get install gradle
这适用于 Ubuntu 18.04
【讨论】:
【参考方案18】:Windows (Windows 10) 的解决方案是:
-
确保已安装 Java 8
从https://gradle.org/install/ 下载 Gradle 二进制文件
使用文件资源管理器创建新目录 C:\Gradle
提取 gradle-6.7.1 并将其复制到 C:\Gradle
配置您的 PATH 环境变量以包含路径 C:\Gradle\gradle-6.7.1\bin
运行 gradle -v 以确认一切正常。
C:>Gradle -v
Gradle 6.7.1
构建时间:2020-11-16 17:09:24 UTC 修订:2972ff02f3210d2ceed2f1ea880f026acfbab5c0
科特林:1.3.72 时髦的:2.5.12 Ant:2020 年 5 月 10 日编译的 Apache Ant(TM) 版本 1.10.8 JVM:1.8.0_144(甲骨文公司 25.144-b01) 操作系统:Windows 10 10.0 x86
C:>
最后,运行 [Cordova 环境] 以检查是否已为开发设置好一切。
C:\Users\opiyog\AndroidStudioProjects\IONIC\SecondApp>cordova 要求
android 的需求检查结果: Java JDK:已安装 1.8.0 Android SDK:已安装 true Android目标:安装android-30,android-29,android-28,android-27,android-26,android-25,android-24,android-23,android-22,android-21,android-19 Gradle:已安装 C:\Gradle\gradle-6.7.1\bin\gradle.BAT
【讨论】:
【参考方案19】:“Android 目标:未安装”
请安装 Android 目标/API 级别:“android-25”。
您需要创建一个Android虚拟设备(API级别:“android-25”或最新)或需要添加android真设备。
您也可以在 Android Studio 中导入项目并运行。
您可以在这里查看:
https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html
https://developer.android.com/studio/command-line/adb.html
【讨论】:
我认为您不需要虚拟设备来进行构建。但不管怎样,我加了一个:system-images;android-25;google_apis;x86
,得到了同样的错误。以上是关于科尔多瓦 Android 要求失败:“找不到安装的 Gradle 版本”的主要内容,如果未能解决你的问题,请参考以下文章
科尔多瓦 android 构建失败,在 Windows 上找不到符号