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

Я пытаюсь создать проект 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) 

Кажется, он не может найти Грейдл (не уверен, где это должно быть).

Я видел сообщения о проблемах с 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 без Android Studio, вам нужно вручную установить Gradle. Как только вы это сделаете, и это на вашей PATH, эта ошибка исчезнет.

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

Solutions Collecting From Web of "Требования к кордове Android не удалось: «Не удалось найти установленную версию Gradle»"

Решение для 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. Он работает только тогда, когда первая команда выполняется раньше (вероятно, некоторые зависимости неверны).

 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

Обновить

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

Установить sdkman

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

Установить град

 sdk install gradle 4.0.2 

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

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

  1. Найдите файл check_reqs.js под платформами \ android \ cordova \ lib
  2. Отредактируйте androidStudioPath часть переменной androidStudioPath null в функции get_gradle_wrapper как 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 удаляется и повторно добавляется

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

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

Так что я сделал

cordova platform rm android cordova platform add android@6.2.1

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

Поскольку вы находитесь в Linux, вам придется самостоятельно устанавливать градиль, возможно, после этого руководства , а затем помещать запись в PATH в папку, содержащую исполняемый файл 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 , cordova@6.5.0 , cordova-android@6.2.1 (node@4.7.3), у меня были проблемы с сборкой из-за отсутствия цели 25 и градации.

Первая проблема была решена с комментариями X.Zhang (т. Е. Сменить android на 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 ваши исправления исчезнут.

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

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

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

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

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

Возможно, вы установили последнюю avdmanager list targets Android Studio 2.3.1, она изменила android list targets avdmanager list targets 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']) 

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

«Цель Android: не установлена»

Установите Android target / API level: «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