web-dev-qa-db-ja.com

cordova Android要件に失敗しました: "Gradleのインストール済みバージョンが見つかりませんでした"

最新のツールを使用してCordova 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を見つけることができないようです(それがどこにあるのかわかりません)。

reports 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 St​​udioなしでAndroidコマンドラインツールを使用している場合は、Gradleを手動でインストールする必要があります。実行すると、PATH上にあるこのエラーはなくなります。

私を混乱させた追加の事柄:Android SDKツールの古いバージョンでは、tools/templates/gradle/wrapper/gradlewにGradleラッパースクリプトがありました。これはGradleのインストールにも使用できますが、手動でインストールする方が簡単だとわかりました。これは、最新バージョンの時点で削除されたようです。

47
JW.

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#91599

CentOSの場合

CentOSのインストール手順gradleはこのリンクの下にあります

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

更新

sdkman でgradleをインストールしています.

Sdkmanをインストールする

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

Gradleをインストールする

sdk install gradle 4.0.2
60
Daniel

Android studioがインストールされている場合は、試してみてください。

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

これで問題が解決しました。

36

Cordovaバージョン7.0.1を使用しており、Cordova Androidバージョンは6.2.3です。 Androidビルドの実行中に問題に直面していました。 Cordova CLIのみを使用し、Android studioを使用していません。

Cordovaで公式に修正される前のこの問題の簡単な回避策は次のとおりです。

  1. Platform\Android\cordova\libフォルダーの下でcheck_reqs.jsファイルを探します
  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を明示的にインストールする必要性を感じています。したがって、影響と労力を最小限に抑えるためにこの回避策を行いました

12
Gandhi

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と入力します。

8
Diogo Rodrigues

マックOS

次の行を~/.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を使用して、新しいパスを現在のターミナルセッションに直接ロードします。

5
Coanda

私はこれをQiitaチュートリアルに従ってトラブルを解決しました。

環境:Cordova 8.1.1Android Studio 3.2cordova-Android 7.0.0

  1. gradle PATHを.profileファイルに設定します。
 export PATH = "/ Applications/Android Studio.app/Contents/gradle/gradle-4.6/bin":$PATH
  1. 設定をエクスポートします。
 source〜/ .profle 
  1. 次に、cordovaプロジェクトをビルドします。
 cordovaビルドAndroid 

PS:[email protected]がビルドエラーを引き起こす場合、プラットフォームバージョンを6.3.にダウングレードします。

4
Ali D.

拡張 https://stackoverflow.com/users/5540715/surendra-shrestha Linux(〜mint)ユーザー向けの回答:
1。インストール Android Studio (多くのツールはコマンドラインで廃止されているため、これが必要になる可能性があります)。著者の指示に従うと、Android St​​udioは/ usr/local/Android-studio /にインストールされます。執筆時点では、Android St​​udioのgradleバージョンは3.2です。ls /usr/local/Android-studio/gradle/であなたのものを見てください。
2。 gradleコマンドを追加します。これは、@ surendra-shresthaが示唆するように(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
4
jgpATs2w

私にとって問題は、私のAndroidバージョンがまだ最新のAndroid St​​udio 2.3.1と互換性のない6.1.2であったことでした。

だから私がやったのは

cordova platform rm Android cordova platform add [email protected]

3
julianalimin

OPの質問に答えるには:

Linuxを使用しているため、おそらく this guide に従ってgradleをインストールし、PATHのエントリをgradle実行可能ファイルを含むフォルダーに配置する必要があります。

CordovaにはAndroid St​​udioがあり、MacとWindowsのみの場合、gradleを探すコードがあります。こちらをご覧ください。

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


私はWindowsを使用しているため、OPの質問に半関連しています。

Android Studio 2.3.1[email protected][email protected][email protected])にアップグレードした後、ターゲット25とgradleが見つからないため、ビルドの問題が発生しました。

最初の問題は、X.Zhangからのコメント(つまり、Androidavdmanagerに変更)で解決されました。ところで、 がgithub に上陸したので、cordova-Androidは6.3.0で修正する必要があります(しかし、私はテストしませんでした)。

2番目の問題は次のとおりです。

問題はprocess.env['ProgramFiles']'C:\\Program Files (x86)';に評価されるのに、C:\\Program FilesにAndroid St​​udioがあることでした。

そのため、この値を上書きするか、Android St​​udioを別の場所にインストールするのが簡単です。

// 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

2
jakub.g

同じ問題ですが、brewを使用するMacでは非常に簡単です。

  • 醸造アップデート
  • グラードインストールグラドル
1
Chris Skura

私はたくさん試しましたが、最終的にはうまくいきませんでした、

  1. Macosポートを使用してgradleをインストールしました
  2. Gradleをインストールした後、GRADLE_HOMEパスを設定しました
  3. 実行しました::

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

Sudo chmod -R a+rwx *

Sudo chmod 777 {your-gradle-path}

すぐに働き始めた

1
Abhishek Mathur

ターミナルで実行:

$ Sudo apt-get update
$ Sudo apt-get install gradle

これはUbuntu 18.04で動作します

0
mahfuz

Cordovaを最新バージョンに更新すると、問題が解決するはずです。問題が解決しない場合は、環境変数にパスを設定してください(Windowsの場合)。例:システム変数値名GRADLE_HOME値D:\ Android\Android Studio\gradle\gradle-4.3.1(パスに置き換えてください)

0

おそらく最新のAndroid St​​udio 2.3.1をインストールしたため、コマンドAndroid list targetsavdmanager list targetsに変更したため、修正する方法があります。

パス<Android-sdk>/tools/binPATHに追加します。これは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'])
0
Xiaohui Zhang