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

JW.*_*JW. 51 android cordova

我正在尝试使用最新的工具构建Cordova Android项目.我按照这里的说明操作:

$ cordova create myApp com.myCompany.myApp myApp
$ cd myApp
$ cordova platform add android@6.2.1 --save
$ cordova requirements android --verbose
Run Code Online (Sandbox Code Playgroud)

但结果是:

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)
Run Code Online (Sandbox Code Playgroud)

它似乎无法找到Gradle(不确定它应该在哪里).

我已经看到有关 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/                      
Run Code Online (Sandbox Code Playgroud)

更新:

在Cordova或Android的文档中似乎没有提到它,但如果您使用的是没有Android Studio的Android命令行工具,则必须手动安装Gradle.一旦你做了,它就在你的PATH上,这个错误就会消失.

另一件令我困惑的事情是:在早期版本的Android SDK工具中,有一个Gradle包装器脚本tools/templates/gradle/wrapper/gradlew.这也可以用来安装Gradle,但我发现手动安装它更容易.从最新版本开始,这似乎已被删除.

Dan*_*iel 61

使用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
Run Code Online (Sandbox Code Playgroud)

但没有例外.我在Ubuntu上解决了它

sudo apt-get install gradle
Run Code Online (Sandbox Code Playgroud)

我发现还允许在Ubuntu中安装最新版本的gradle的命令.它仅在以前执行第一个命令时起作用(可能是某些依赖项不正确).

sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle-ppa
Run Code Online (Sandbox Code Playgroud)

https://wtanaka.com/node/8079

如果它不起作用,请尝试:

export PATH=$PATH:/opt/gradle/gradle-3.5/bin
Run Code Online (Sandbox Code Playgroud)

更多信息:

https://askubuntu.com/questions/915980/package-is-installed-and-is-not-detected-gradle/915993#915993

对于CentOS

gradleCentOS 的安装指示在此链接下

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

更新

现在我通过sdkman安装gradle 它就像节点的nvm.

安装sdkman

curl -s "https://get.sdkman.io" | bash 
Run Code Online (Sandbox Code Playgroud)

安装gradle

sdk install gradle 4.0.2
Run Code Online (Sandbox Code Playgroud)

  • 虽然这有效,但它会在系统中安装第二个gradle,然后安装OpenJDK.当Android Studio安装目录中已存在gradle和JRE时,无需将所有这些膨胀添加到系统中. (2认同)

Sur*_*tha 38

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

export PATH="$PATH:/home/<username>/android-studio/gradle/<gradle-4.0>/bin" 
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题.

  • 在Mac上它就像这样的`/ Applications/Android Studio.app/Contents/gradle/gradle-4.4/bin /`. (11认同)
  • 这应该是公认的答案!没有引入额外的依赖项和包 (2认同)
  • 这应该是公认的答案。请注意,如果 Android Studio 以 root 身份安装,您可能需要向普通用户添加对 gradle 可执行文件的 +x 权限。这是我的情况,目录是“/opt/android-studio/gradle/gradle-4.1/bin”。[这个答案](/sf/answers/3203905631/) 对我也有帮助。 (2认同)

Dio*_*ues 16

对于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。


Gan*_*dhi 12

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

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

  1. check_reqs.js在platforms\android\cordova\lib文件夹下查找文件
  2. 编辑androidStudioPath变量null 的else部分检查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包装器,我发现必须明确安装gradle.因此,我做了这个解决方法,以尽量减少我的影响和努力


小智 7

Windows 10(已安装 Android Studio)

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

  1. 找到 Gradle 安装文件夹:转到C:\Users\<username>\.gradle\wrapper\dists. 选择一个版本(就我而言gradle-6.4-all)。进一步导航,直到到达“bin”文件夹。

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

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


Wen*_* Li 5

我按照这个Qiita教程来解决我的麻烦。

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

  1. gradle PATH设置为.profile文件。
导出路径="/Applications/Android Studio.app/Contents/gradle/gradle-4.6/bin":$PATH
  1. 导出设置。
源 ~/.profle
  1. 现在构建cordova项目。
科尔多瓦构建安卓

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


Coa*_*nda 5

苹果系统

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

export PATH=${PATH}:/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6/bin/
Run Code Online (Sandbox Code Playgroud)

用于source ~/.bash_profile将新路径直接加载到当前终端会话中。