Cordova Requisiti Android non riusciti: “Imansible trovare una versione installata di Gradle”

Sto cercando di creare un progetto Cordova per Android utilizzando gli strumenti più recenti. Ho seguito le istruzioni qui :

$ cordova create myApp com.myCompany.myApp myApp $ cd myApp $ cordova platform add android@6.2.1 --save $ cordova requirements android --verbose 

Ma il risultato è:

 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) 

Non sembra in grado di trovare Gradle (non è sicuro dove dovrebbe essere).

Ho visto segnalazioni di problemi con Cordova e Android SDK Tools 25.3, ma questo sembra essere diverso, e ho 25.2.3 (vedi sotto).

Ho il seguente (questo è su 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/ 

AGGIORNARE:

Non sembra essere menzionato da nessuna parte nei documenti di Cordova o Android, ma se stai usando gli strumenti da riga di comando Android senza Android Studio, devi installare manualmente Gradle. Una volta che lo fai, ed è sul tuo PERCORSO, questo errore andrà via.

Un’altra cosa che mi confondeva: nelle versioni precedenti degli strumenti di Android SDK, c’era uno script di wrapper Gradle in tools/templates/gradle/wrapper/gradlew . Questo può anche essere usato per installare Gradle, ma ho trovato più facile installarlo manualmente. Questo sembra essere stato rimosso dall’ultima versione.

Soluzione per Linux con apt-get (es .: Ubuntu, Debian)

Ho un problema abbastanza simile. Ho ottenuto l’errore:

 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 

ma senza eccezioni. L’ho risolto su Ubuntu di

 sudo apt-get install gradle 

Ho trovato anche i comandi che consentono di installare la versione più recente di gradle in Ubuntu. Funziona solo quando il primo comando viene eseguito prima (probabilmente alcune dipendenze non sono corrette).

 sudo add-apt-repository ppa:cwchien/gradle sudo apt-get update sudo apt-get install gradle-ppa 

https://wtanaka.com/node/8079

Se non funziona, prova:

 export PATH=$PATH:/opt/gradle/gradle-3.5/bin 

Ulteriori informazioni:

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

Per CentOS

L’istruzione di instalation gradle per CentOS è sotto questo link

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

Aggiornare

Ora installando gradle da sdkman è qualcosa come nvm per node.

Installa sdkman

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

Installa gradle

 sdk install gradle 4.0.2 

Se hai installato Android Studio, potresti provare a:

 export PATH="$PATH:/home//android-studio/gradle//bin" 

Questo ha risolto il mio problema.

Sto usando Cordova versione 7.0.1 e Cordova versione android è 6.2.3. Stavo affrontando il problema durante l’esecuzione di build Android. Sto usando solo Cordova CLI e non uso affatto Android Studio.

La soluzione rapida per questo problema prima del suo aggiornamento ufficiale in Cordova è la seguente:

  1. Cerca il file check_reqs.js cartella platform \ android \ cordova \ lib
  2. Modifica la parte else del controllo null della variabile get_gradle_wrapper nella funzione get_gradle_wrapper come di seguito:

Codice esistente:

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

Codice modificato:

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

NOTA: questa modifica deve essere eseguita ogni volta che la piattaforma Android viene rimossa e riaggiunta

AGGIORNAMENTO: Nel mio caso, ho già avuto il wrapper gradle all’interno del mio SDK Android e non riesco a trovare la necessità di installare gradle esplicitamente. Quindi, ho fatto questa soluzione per ridurre al minimo il mio impatto e sforzo

Per me il problema era che la mia versione di Android era ancora su 6.1.2 che non è compatibile con il nuovissimo Android Studio 2.3.1.

Quindi quello che ho fatto è stato correre

cordova platform rm android cordova platform add android@6.2.1

Per rispondere alla domanda dell’OP:

Dato che sei su Linux, dovrai installare da solo gradle, magari seguendo questa guida , e quindi inserire una voce in PATH in una cartella che contiene eseguibile gradle .

Cordova ha del codice per cercare gradle se hai Android Studio ma solo per Mac e Windows, vedi qui:

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


Semi-correlato alla domanda dell’OP, visto che sono su Windows.

Dopo l’aggiornamento ad Android Studio 2.3.1 , cordova@6.5.0 , cordova-android@6.2.1 (node@4.7.3), ho riscontrato problemi di compilazione dovuti alla mancanza dell’objective 25 e del gradle.

Il primo problema è stato risolto con il commento di X.Zhang (ad esempio, modifica di android in avdmanager ), a quanto pare un commit da risolvere che è atterrato su github, quindi cordova-android dovrebbe risolvere il problema in 6.3.0 (ma non ho provato).

Il secondo problema era il seguente:

Il problema si è verificato che process.env['ProgramFiles'] restituisce 'C:\\Program Files (x86)'; mentre ho Android Studio in C:\\Program Files .

Quindi il trucco rapido è di ignorare questo valore o installare Android Studio nell’altro posto.

 // 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') + '/'; 

Non sono sicuro di quale sarebbe la correzione corretta per gestire entrambe le cartelle in modo robusto (diverso dall’iterazione su entrambe le cartelle).

Ovviamente questo deve essere risolto nel progetto cordova-android stesso; in caso contrario, ogni volta che si esegue la cordova platform rm le correzioni spariranno.

Ho aperto il biglietto su Cordova JIRA:

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

Estensione di https://stackoverflow.com/users/5540715/surendra-shrestha risposta per gli utenti linux (~ mint):
1. Installa Android Studio (molti strumenti sono stati deprecati per la riga di comando, quindi è probabile che ciò sia richiesto). Seguendo le istruzioni dell’autore, il tuo Android Studio verrà installato in / usr / local / android-studio /. Al momento della scrittura, la versione gradle in Android Studio è la 3.2, guarda la tua con ls /usr/local/android-studio/gradle/ .
2. Aggiungi il tuo comando gradle, questo può essere fatto estendendo il PATH, come suggerito da @ surendra-shrestha (dovrebbe essere scritto in ~ / .bashrc per preservare la modifica PATH), aggiungendo un alias echo 'export alias gradle=/usr/local/android-studio/gradle/gradle-3.2/bin/gradle' >> ~/.bashrc && source ~/.bashrc . O facendo un collegamento simbolico: sudo ln -sn /usr/local/android-studio/gradle/gradle-3.2/bin/gradle /usr/bin/gradle (questa era la mia scelta).
3. Eseguire i cordova requirements per verificare che tutto sia OK, dovrebbe produrre qualcosa come:

 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 

Per Windows:

-Scarica l’ultima versione di Gradle ( https://gradle.org/releases )

-Crea una cartella e decomprimi i file (io uso C: \ Programmi (x86) \ gradle)

-Copia il percorso con la directory bin inclusa (C: \ Programmi (x86) \ gradle \ bin)

-Impostare il percorso C: \ Programmi (x86) \ gradle \ bin (nel mio esempio) su “Variabili d’ambiente Path”

Nome variabile “Percorso” e valore variabile “C: \ Programmi (x86) \ gradle \ bin” per entrambi: tabella Variabile utente e tabella Variabili di sistema

Potrebbe essere necessario riaprire la “Riga di comando rapida”

Per testare, digitare gradle in prompt.

Forse hai installato l’ultima versione di Android Studio 2.3.1, ha cambiato il comando degli android list targets per gli android list targets di avdmanager list targets , quindi è ansible risolverlo:

aggiungi path /tools/bin a PATH , questo è per MacOX.

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

cambia il tuo codice /platforms/android/cordova/lib/android_sdk.js .

modificare

 module.exports.list_targets_with_android = function() { return superspawn.spawn('android', ['list', 'targets']) 

a

 module.exports.list_targets_with_android = function() { return superspawn.spawn('avdmanager', ['list', 'targets']) 

Aggiorna il tuo cordova alla versione più recente e il problema dovrebbe essere risolto. Nel caso in cui il problema non venga risolto, impostare il percorso nella variabile di ambiente (nel caso di Windows). Esempio: Nome valore variabile di sistema GRADLE_HOME Valore D: \ Android \ Android Studio \ gradle \ gradle-4.3.1 (sostituirlo con il percorso)

Ho provato molti ma non ha funzionato alla fine,

  1. Ho installato gradle usando la porta macos
  2. Ho impostato il percorso GRADLE_HOME come indicato dopo aver installato gradle
  3. Ho eseguito ::

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

sudo chmod -R a+rwx *

sudo chmod 777 {your-gradle-path}

Ha immediatamente iniziato a funzionare

Esegui nel terminale:

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

Questo funziona per me in Ubuntu 18.04

“Target Android: non installato”

Si prega di installare il livello di destinazione / API Android: “android-25”.

È necessario creare un dispositivo virtuale Android (livello API: “android-25” o più recente) o aggiungere il dispositivo Android reale.

Inoltre puoi importare il progetto in Android Studio ed eseguirlo.

Puoi controllare qui:

https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html

https://developer.android.com/studio/command-line/adb.html