Mac環境で使っているCordovaでAndroidアプリをビルドしようとしたらエラーでできなかった時の対処.
「とりあえずiOSしか使わないしAndroid環境は適当にやっておこう」と当初サボっていたせいで色々忘れていたのが原因だったが取り急ぎメモ.
環境
- MacBook Pro
- macOS High Sierra
- Cordova 8.0.0
- Platform : android@7.0.0
今回,すごくエラーの解消に遠回りをしてしまい色々調べたので,まず最短と思われる対処方法をメモした後,余談として調べたことを書く.
CordovaError: Requirements check failed for JDK 1.8 or greater
Androidのビルドでエラー
iOSで作っていたアプリがAndroidで正常に動作するか確かめるためコマンドを実行.
% cordova platform add Android % cordova run android ~~~ ANDROID_HOME=/Users/ユーザ/Library/Android/sdk JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home (node:11218) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): CordovaError: Requirements check failed for JDK 1.8 or greater ~~~
「あれ?見たことないエラー出てる」となった(promiseのwarningも出てるけどこれは僕のミス).「Windows環境でやってた時とバイト先で環境構築したMacでやってた時はこんなんでなかったぞ」と思いつつ見てみると,どうやらJDKのバージョンのせいらしい.
CordovaError: Could not find an installed version of Gradle either in Android Studio,...
gradle見つからない
以下のようなエラーが出た
% cordova run android Android Studio project detected ANDROID_HOME=/Users/haruka/Library/Android/sdk JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home # ちゃんと変わっている ~~~ (node:15240) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): CordovaError: 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 ~~~
gradleが見つからないと言われているようだ.
gradleに関するエラーの対処
ググってみるとgradleをインストールしようなどの記事が見つかるが,Android Studioにgradleありそうだったのでまたまたパスを追加
export PATH="/Applications/Android Studio.app/Contents/gradle/gradle-4.1/bin":"$PATH"
これでエラーがなくなりAndroidの実機で実行することができた.
Android環境の構築にはこれ以外にAndroidSDKへのパスの追加なども必要だが,
詳細は本記事下部にあるApache Cordovaの公式サイトを参考にするとわかりやすい.
まとめ
MacBook Pro購入直後,ウキウキして早くiOSのビルドがしたくて環境構築を適当にやったために出たエラーであった.
JDKの設定とGradleのパスをきちんと通せば解決できる問題だった.
余談
gradleの権限設定によるエラー
gradleの権限設定がおかしくてgradleが見つからないという場合があるらしい.対処としては以下のように権限を変更する.
chmod +x /gradleへのパス/gradle/gradle-4.1/bin/gradle
gradleのバージョンによるエラー
今回の件とは違うのだが,gradleのバージョンでビルドできない場合があるらしい.
owlsoft.xyz