cordova Android要求失败:"无法找到已安装的Gradle版本"

时间:2017-04-11 21:53:52

标签: android cordova

我正在尝试使用最新的工具构建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(不确定它应该在哪里)。

我已经看过Cordova和Android SDK Tools 25.3的reports问题,但这似乎有所不同,我有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,但我发现手动安装它更容易。从最新版本开始,这似乎已被删除。

19 个答案:

答案 0 :(得分:57)

使用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,它类似于节点的nvm。

安装sdkman

curl -s "https://get.sdkman.io" | bash 

安装gradle

sdk install gradle 4.0.2

答案 1 :(得分:34)

如果您安装了android studio,那么您可能想尝试:

export PATH="$PATH:/home/<username>/android-studio/gradle/<gradle-4.0>/bin" 

这解决了我的问题。

答案 2 :(得分:12)

我使用的是Cordova版本7.0.1,而Cordova的android版本是6.2.3。我在执行android构建时遇到了这个问题。我只使用Cordova CLI而根本不使用android studio。

此问题在Cordova官方修正之前的快速解决方法如下:

  1. 在platforms \ android \ cordova \ lib文件夹
  2. 下查找check_reqs.js文件
  3. androidStudioPath函数中编辑get_gradle_wrapper变量null check的else部分,如下所示:
  4. 现有代码:

      

    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。因此,我做了这个解决方法,以尽量减少我的影响和努力

答案 3 :(得分:4)

对于Windows:

- 下载Gradle的最新版本(https://gradle.org/releases

创建一个文件夹并解压缩文件(我使用C:\ Program Files(x86)\ gradle)

使用包含的bin目录复制路径(C:\ Program Files(x86)\ gradle \ bin)

- 将路径C:\ Program Files(x86)\ gradle \ bin(在我的例子中)设置为“Path Environment Variables”

变量名称“Path”和变量值“C:\ Program Files(x86)\ gradle \ bin”用于:用户变量表和系统变量表

您可能需要重新打开“提示commad行”

要进行测试,请在提示符下键入gradle。

答案 4 :(得分:4)

macOS

可以在Mac上通过将以下行添加到~/.bash_profile来添加Gradle。如果文件不存在,请使用touch ~/.bash_profile。可以使用Command + Shift +使该隐藏文件在Finder中可见。

export PATH=${PATH}:/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6/bin/

使用源~/.bash_profile直接加载新路径。

答案 5 :(得分:3)

对我来说问题是我的Android版本仍然在6.1.2上,与最新的Android Studio 2.3.1不兼容。

所以我做的是运行

@Provides @IntoMap @ActivityKey(YourActivity.class) AndroidInjector.Factory bindInjector(YourActivitySubcomponent.Builder builder) { return builder .oneModule(new OneModule(...)) .twoModule(new TwoModule(...)); }

答案 6 :(得分:3)

为linux(~mini)用户扩展https://stackoverflow.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

答案 7 :(得分:3)

我按照此 Qiita 教程解决了我的麻烦。

环境: Cordova 8.1.1Android Studio 3.2cordova-android 7.0.0

  1. 渐变路径设置为.profile文件。
export PATH="/Applications/Android Studio.app/Contents/gradle/gradle-4.6/bin":$PATH
  1. 导出设置。
source ~/.profle
  1. 现在建立科尔多瓦项目。
cordova build android

PS:如果cordova-android@7.0.0导致生成错误,请将您的平台版本降级为 6.3.0

答案 8 :(得分:2)

回答OP的问题:

由于您使用的是Linux,因此您必须自己安装gradle,可能需要this guide,然后将PATH中的条目放入包含gradle的文件夹中可执行文件。

Cordova有一些代码可以查找gradle,如果您有Android Studio但仅适用于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.1cordova@6.5.0cordova-android@6.2.1(node@4.7.3)后,由于缺少目标25和gradle,我遇到了构建问题。

第一个问题是通过X.Zhang的评论解决的(即将android更改为avdmanager),BTW似乎是修复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

答案 9 :(得分:1)

Windows 10(安装了 Android Studio)

使用此解决方案,您无需在系统上多次安装 Gradle。

  1. 找到 Gradle 安装文件夹:转到 C:\Users\<username>\.gradle\wrapper\dists。选择一个版本(在我的例子中是 gradle-6.4-all)。继续导航,直到到达“bin”文件夹。

  2. 将路径添加到 Path 环境变量:开始菜单 > 输入“编辑环境变量”。在下部(系统变量)中查找“路径”变量,然后单击“编辑”。然后将完整路径添加为新值,在我的情况下为 C:\Users\<username>\.gradle\wrapper\dists\gradle-6.4-all\h8pi7famayzdg9sl28jayaip\gradle-6.4\bin。不要忘记保存您的更改!

  3. 不要忘记重启所有终端(例如重启 VS Code)。之后,它在我的电脑上运行了!

答案 10 :(得分:1)

我尝试了很多,但最终没有成功,

  1. 我使用macos port
  2. 安装了gradle
  3. 我在安装gradle
  4. 后设置了GRADLE_HOME路径
  5. 我执行了::
  6. Private Sub Form_Load() Dim strSQL As String strSQL = "SELECT tblstatusupdate.LastUserChange" & _ "FROM tblstatusupdate " & _ "WHERE tblstatusupdate.LastChangeDate = DMax("LastChangeDate", "tblStatusUpdate")" DoCmd.RunSQL strSQL Me.LastUpdateBy = strSQL End Sub

    = DMax("LastChangeDate", "tblStatusUpdate")

    sudo chmod -R a+rwx /Library/Java/JavaVirtualMachines *

    它立即开始工作

答案 11 :(得分:0)

将您的cordova更新到最新版本,问题应该得到解决。 如果问题未解决,请在环境变量中设置路径(如果是Windows)。例: 系统变量 值名称GRADLE_HOME 值D:\ Android \ Android Studio \ gradle \ gradle-4.3.1(请替换为您的路径)

答案 12 :(得分:0)

适用于 Windows (Windows 10) 的解决方案是:

  1. 确保您已安装 Java 8
  2. https://gradle.org/install/ 下载 Gradle 二进制文件
  3. 使用文件资源管理器创建一个新目录 C:\Gradle
  4. 将 gradle-6.7.1 解压并复制到 C:\Gradle
  5. 配置 PATH 环境变量以包含路径 C:\Gradle\gradle-6.7.1\bin
  6. 运行 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

答案 13 :(得分:0)

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

答案 14 :(得分:0)

Mac解决方案

示例问题,但是我用brew找到了解决方案。
1.确保已安装最新的Android Studio。
2.从SDK Manager确认您已安装必需的SDK。
3.(可选)您也可以安装AVD。
4.安装Homebrew。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

5。然后运行brew更新以确保Homebrew是最新的。

brew update

6。运行啤酒医生以确保一切安全

brew doctor

7。在.bash_profile或.zshrc文件中,将Homebrew的位置添加到$ 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正常工作。

答案 15 :(得分:0)

相同的问题,但在带有brew的Mac上非常简单:

  • 酿酒更新
  • 酿造gradle

答案 16 :(得分:0)

在终端中运行:

$ sudo apt-get update
$ sudo apt-get install gradle

这适用于Ubuntu 18.04

答案 17 :(得分:0)

也许您安装了最新的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'])

答案 18 :(得分:-2)

“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