首页 文章

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

提问于
浏览
37

我正在尝试使用最新的工具构建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的问题,但这似乎有所不同,我有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/

UPDATE:

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

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

14 回答

  • 0

    使用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
    
  • 2

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

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

    这解决了我的问题 .

  • 2

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

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

    • 在platforms \ android \ cordova \ lib文件夹下查找 check_reqs.js 文件

    • 编辑 androidStudioPath 变量的else部分,检查 get_gradle_wrapper 函数,如下所示:

    Existing code:

    else {//好的,让我们试试检查Gradle!返回forgivingWhichSync('gradle'); }

    Modified code:

    else {//好的,让我们试试检查Gradle! var sdkDir = process.env ['ANDROID_HOME']; return path.join(sdkDir,'tools','templates','gradle','wrapper','gradlew'); }

    NOTE: 每次删除并重新添加android平台时都需要进行此更改

    更新:在我的情况下,我已经在我的android SDK中有gradle包装器,我发现必须明确安装gradle . 因此,我做了这个解决方法,以尽量减少我的影响和努力

  • 0

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

    所以我做的就是跑

    cordova platform rm android cordova platform add android@6.2.1

  • -2

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

  • 3

    回答OP的问题:

    由于您必须自己安装gradle,可能是在this guide之后,然后将 PATH 中的条目放入包含 gradle executable的文件夹中 .

    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 ),顺便说一句,它似乎是修复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

  • 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
    
  • 0

    我尝试了很多,但它最终没有工作,

    • 我使用macos端口安装了gradle

    • 我在安装gradle后设置了GRADLE_HOME路径

    • 我执行了::

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

    sudo chmod -R a+rwx *

    sudo chmod 777 {your-gradle-path}

    它立即开始工作

  • 1

    我按照这个 Qiita 教程解决了我的麻烦 .

    Environment: Cordova 8.1.1, Android Studio 3.2, cordova-android 7.0.0

    • gradle PATH设置为 .profile 文件 .
    export PATH="/Applications/Android Studio.app/Contents/gradle/gradle-4.6/bin":$PATH
    
    • 导出设置 .
    source ~/.profle
    
    • 现在 Build cordova项目 .
    cordova build android
    

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

  • 12

    也许您安装了最新的Android Studio 2.3.1,它将命令 android list targets 更改为 avdmanager list targets ,因此有如何修复它:

    add path <android-sdk>/tools/bin to PATH, this is for MacOX.

    export PATH="$PATH:/Users/<username>/Library/Android/sdk/tools/bin"
    

    change your cordova project code <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'])
    
  • 32

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

  • 48

    在终端运行:

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

    这在Ubuntu 18.04中适用于我

  • 1

    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 直接加载新路径 .

  • 0

    “Android target: not installed”

    请安装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

相关问题