Требования к кордове Android не удалось: "Не удалось найти установленную версию Gradle"

Я пытаюсь создать проект Android в Кордове, используя самые последние инструменты. Я выполнил инструкции здесь:

$ cordova create myApp com.myCompany.myApp myApp
$ cd myApp
$ cordova platform add [email protected] --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:

Это нигде не упоминается ни в Кордове, ни в документах Android, но если вы используете инструменты командной строки Android без Android Studio, вам нужно вручную установить Gradle. Как только вы это сделаете, и это на вашей PATH, эта ошибка исчезнет.

Еще одна вещь, которая меня сбила с толку: в старых версиях инструментов Android SDK была Gradle обертка script в tools/templates/gradle/wrapper/gradlew. Это также можно использовать для установки Gradle, но мне было проще просто установить его вручную. Это, кажется, было удалено с последней версии.

Ответ 1

Решение для linux с apt-get (например: 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

Инструкция по установке gradle для CentOS находится по этой ссылке

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

Update

Теперь я устанавливаю gradle на sdkman, это что-то вроде nvm для node.

Установить sdkman

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

Установить gradle

sdk install gradle 4.0.2

Ответ 2

Если у вас установлена ​​студия Android, вы можете попробовать:

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

Это решило мою проблему.

Ответ 3

Я использую версию Кордовы версии 7.0.1 и версию для Android версии 6.5.2. Я столкнулся с проблемой при выполнении сборки Android. Я использую только CLI Cordova и вообще не использую андроид-студию.

Быстрое решение этой проблемы до официального утверждения в Кордове выглядит следующим образом:

  • Найдите check_reqs.js файл под платформами \android\cordova\lib папка
  • Отредактируйте часть else androidStudioPath variable null check in get_gradle_wrapper, как показано ниже:

Существующий код:

else { //OK, let try to check for Gradle! return forgivingWhichSync('gradle'); }

Измененный код:

else { //OK, let try to check for Gradle! var sdkDir = process.env['ANDROID_HOME']; return path.join(sdkDir, 'tools', 'templates', 'gradle', 'wrapper', 'gradlew'); }

ПРИМЕЧАНИЕ. Это изменение необходимо делать каждый раз, когда платформа android удаляется и повторно добавляется

UPDATE: В моем случае у меня уже была оболочка gradle внутри моего SDK android и я нахожу необходимость установки gradle явно. Следовательно, я сделал это решение для минимизации моего воздействия и усилий.

Ответ 4

Для Windows:

-Загрузить последнюю версию Gradle (https://gradle.org/releases)

-Создайте папку и распакуйте файлы (я использую C:\Program Files (x86)\ gradle)

-Copy путь с включенным каталогом bin (C:\Program Files (x86)\ gradle\bin)

-Установите путь C:\Program Files (x86)\ gradle\bin (в моем примере) на "Переменные среды пути"

Переменное имя "Путь" и значение переменной "C:\Program Files (x86)\ gradle\bin" для обеих: таблица переменных пользователя и таблица системных переменных

Возможно, вам нужно будет снова открыть строку "Prompt commad line"

Чтобы проверить, введите Gradle в командной строке.

Ответ 5

Macos

Gradle можно добавить на Mac, добавив строку ниже в ~/.bash_profile. Если файл не существует, используйте touch ~/.bash_profile. Этот скрытый файл можно сделать видимым в Finder с помощью Command + Shift +.

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

Используйте source ~/.bash_profile чтобы загрузить новый путь непосредственно в текущую терминальную сессию.

Ответ 6

Для меня проблема заключалась в том, что моя версия Android все еще была на 6.1.2, которая несовместима с новейшей версией Android Studio 2.3.1.

Итак, что я сделал, был запущен

cordova platform rm android cordova platform add [email protected]

Ответ 7

Расширение https://stackoverflow.com/users/5540715/surendra-shrestha ответа для пользователей Linux (~ mint):
1. Установите Android Studio (многие инструменты устарели для командной строки, поэтому это, скорее всего, требуется). Если вы следуете инструкциям автора, ваша Android-студия будет установлена ​​в/usr/local/android-studio/. На момент написания версии gradle в Android Studio - 3.2, посмотрите на ваш с помощью ls /usr/local/android-studio/gradle/.
2. Добавьте команду gradle, это можно сделать, расширив PATH, как предложил сурендра-крестха (должен быть записан в ~/.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

Ответ 8

Я последовал этому руководству Qiita, чтобы решить мою проблему.

Окружающая среда: Cordova 8.1.1, Android Studio 3.2, cordova-android 7.0.0

  1. Установите патч PATH в файл .profile.
export PATH="/Applications/Android Studio.app/Contents/gradle/gradle-4.6/bin":$PATH
  1. Экспортируйте настройки.
source ~/.profle
  1. Теперь создаем проект cordova.
cordova build android

PS: Если [email protected] вызывает ошибку сборки, понизите версию своей платформы до 6.3.0.

Ответ 9

Чтобы ответить на вопрос OP:

Поскольку вы находитесь в Linux, вам нужно будет установить gradle самостоятельно, возможно, после это руководство, а затем введите запись в PATH в папку, содержащую исполняемый файл gradle.

В Кордове есть код для поиска gradle, если у вас есть Android Studio, но только для Mac и Windows, см. здесь:

https://github.com/apache/cordova-android/blob/e13e15d3e9aa4b9a61c6ece434e7c023fa5c3553/bin/templates/cordova/lib/check_reqs.js#L101-L132


Полусвязь с вопросом ОП, поскольку я нахожусь в Windows.

После обновления до Android Studio 2.3.1, [email protected], [email protected] (node @4.7.3) у меня возникли проблемы с сборкой из-за отсутствия цели 25 и gradle.

Первая проблема была решена с комментариями X.Zhang(т.е. change android to avdmanager), BTW кажется фиксацией, чтобы зафиксировать, что имеет приземлился на github, поэтому cordova-android должен исправить это в 6.3.0 (но я не тестировал).

Второй вопрос был следующим:

Проблема оказалась в том, что 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 platform rm, ваши исправления исчезнут.

Я открыл билет на Кордове JIRA:

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

Ответ 10

Я пробовал много, но он не работал, наконец,

  1. Я установил град с использованием порта macos
  2. Я установил путь GRADLE_HOME, как сказано после установки gradle
  3. Я выполнил ::

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

sudo chmod -R a+rwx *

sudo chmod 777 {your-gradle-path}

Он сразу же начал работать

Ответ 11

Возможно, вы установили последнюю версию 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'])

Ответ 12

Обновите свою кордову до последней версии, и проблема должна быть решена. Если проблема не решена, укажите путь в переменной среды (в случае Windows). Пример: системная переменная Значение имени GRADLE_HOME Значение D:\Android\Android Studio\gradle\gradle-4.3.1 (замените его своим путем)

Ответ 13

Запуск в терминале:

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

Это работает для меня в Ubuntu 18.04

Ответ 14

та же проблема, но очень простая на Mac с brew:

  • заваривать обновление
  • заваривать грейдл

Ответ 15

"Цель 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