cordova Android要求失败:“找不到安装的Gradle版本”

我正在尝试使用最新的工具来构buildCordova Android项目。 我遵循这里的指示:

$ 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) 

它似乎没有能够findGradle(不知道应该在哪里)。

我已经看到有关 Cordova和Android SDK Tools 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,但我发现它更容易手动安装。 这似乎已被删除,因为最新版本。

Solutions Collecting From Web of "cordova Android要求失败:“找不到安装的Gradle版本”"

Linux与apt-get解决scheme(例如: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的安装指令就是在这个环节下

https://gist.github.com/parzonka/9371885

更新

现在我通过sdkman安装gradle,就像nvm for node一样。

安装sdkman

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

安装gradle

 sdk install gradle 4.0.2 

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

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

这解决了我的问题。

我使用cordova版本7.0.1和cordova安卓版本是6.2.3。 我在执行android build时遇到了这个问题。 我只使用cordovaCLI,而不是使用android工作室。

这个问题在cordova正式确定之前的快速解决方法如下:

  1. 在platforms \ android \ cordova \ lib文件夹下查找check_reqs.js文件
  2. 编辑androidStudioPathvariables的else部分null在get_gradle_wrapper函数中检查如下:

现有的代码:

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包装,我dint发现需要显式安装gradle。 因此,我做了这个解决方法,以尽量减less我的影响和努力

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

所以我所做的就是跑步

cordova platform rm android cordova platform add android@6.2.1

回答OP的问题:

既然你在Linux上,你必须自己安装gradle,也许按照这个指南 ,然后把一个条目放入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 -android cordova@6.5.0 cordova-android@6.2.1 (node@4.7.3)之后,由于缺lesstarget 25和gradle,我产生了一些问题。

第一个问题已经解决了来自X.Zhang的评论(即改变androidavdmanager ),顺便说一句,似乎是一个提交修复, 已经降落在github所以cordova-android应该修复在6.3.0(但我没有testing)。

第二个问题如下:

问题原来是process.env['ProgramFiles']评估为'C:\\Program Files (x86)'; 而我的Android Studio在C:\\Program Files

所以快速入侵是重写这个值,或者将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你的修复将会消失。

我打开cordovaJIRA的票:

https://issues.apache.org/jira/browse/CB-12677

为Linux(〜mint)用户扩展https://stackoverflow.com/users/5540715/surendra-shrestha答案&#xFF1A;
1.安装Android Studio (许多工具已被弃用的命令行,所以这可能是必需的)。 假设你按照作者的指示,你的Android Studio将被安装在/ usr / local / android-studio /中。 在编写本文时,Android Studio中的gradle版本是3.2,请使用ls /usr/local/android-studio/gradle/
2.添加你的gradle命令,这可以通过扩展PATH来完成,就像@ surendra-shresthabuild议的(应该写在〜/ .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 (这是我的select)。
3.运行cordova requirements来检查everyhing是否可以,应该输出如下内容:

 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 

也许你安装了最新的Android Studio 2.3.1,它将命令android list targets更改为avdmanager list targets ,所以有如何解决它:

添加path<android-sdk>/tools/binPATH ,这是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']) 

对于Windows:

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

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

– 包含bin目录的path(C:\ Program Files(x86)\ gradle \ bin)

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

用户variables表和系统variables表中的variables名称“path”和variables值“C:\ Program Files(x86)\ gradle \ bin”

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

要进行testing,请在提示符中键入gradle。

“Android目标:未安装”

请安装Android目标/ API级别:“android-25”。

您需要创build一个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