MacのCordova環境のアップデート 2021-01

このページの内容は、2021年1月8日に行った記録です。

MacにCordova環境の構築のMacなんですが、諸々の更新が来ていたのでアップデートしていきます。
前回は、2019-11にアップデートしていますのでこの続きになります。

本記事では、Cordova 9.0.0 (cordova-lib@9.0.1) から Cordova 10.0.0 になります。

環境について

繰り返しになりますので、詳しくはMacにCordova環境の構築をご覧ください。

iMac (Retina 5K, 27-inch, Late 2015)

OSは2021年1月なので「Big Sur」です。
新しいのが出るたび更新しています。

操作はWindows10からSSHでMacに接続して行っています。

Cordova環境のアップデート

変更前のバージョンを確認

nodebrew ls
v6.6.0
v8.10.0
v10.1.0
v12.8.0
v12.13.1

current: v12.13.1
node -v
v12.13.1
npm -v
6.12.1

nodebrewのバージョンを切り替え

リモートの状態を確認

nodebrew ls-remote
・・・・・v15.0.0   v15.0.1   v15.1.0   v15.2.0   v15.2.1   v15.3.0   v15.4.0   v15.5.0
   v15.5.1

安定版をインストール

nodebrew install-binary stable
Fetching: https://nodejs.org/dist/v14.15.4/node-v14.15.4-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully

ローカルのバージョンを確認

nodebrew ls
v6.6.0
v8.10.0
v10.1.0
v12.8.0
v12.13.1
v14.15.4

current: v12.13.1

使用するバージョンに切り替え

nodebrew use v14.15.4
use v14.15.4

バージョンを確認

node -v
v14.15.4

npmのバージョン

npm -v
6.14.10

cordovaのアップデート

アップデート(インストール)

npm install -g cordova
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
/Users/takashi/.nodebrew/node/v14.15.4/bin/cordova -> /Users/takashi/.nodebrew/node/v14.15.4/lib/node_modules/cordova/bin/cordova
+ cordova@10.0.0
added 397 packages from 248 contributors in 17.335s

バージョン確認

cordova -v
10.0.0

トラブル対応

バージョンアップが完了して早速アプリを起動しようとしたところうまく起動できませんでした。

# cd アプリのディレクトリに移動
cordova run android

次のようなエラーになって起動できません。

~ 省略 ~

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s
27 actionable tasks: 2 executed, 25 up-to-date
/Users/takashi/app/terimukuri/aruite-me-my.com/app/kagawa_bouhan/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

書かれている内容を読んでいくと「Could not find tools.jar」の文字が気になります。

で、いろいろ調査などしていくのですが、最終的にはこちらに書かれていた方法で対応することにしました。

ざっくりと私の解釈で説明すると次のような感じです。

  • Big Surになって「JAVA_HOME」が消えた
  • JAVAの最新版のパスが「Internet Plug-Ins」になってる
  • コンパネからのJAVAの更新では最新版
  • /usr/libexec/java_home -V で複数出てくる
  • 「Internet Plug-Ins」には tools.jar は含まれてない。古いバージョンのほうには含まれてる
  • で参照しているのは「Internet Plug-Ins」のほう
  • JAVA_HOME を指定して古いバージョンを指すようにするか、もしくは、古いバージョンにある tools.jar を「Internet Plug-Ins」にコピーするか

ということで、次のようにして解決としました。

# 確認
/usr/libexec/java_home -V

# 存在することを確認
# 1.8.0_161 は▲で出てきた数字に書き換え
/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/lib/tools.jar

# tools.jar がいないことを確認
ls -la /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/t*

# コピー
# 1.8.0_161 は▲で出てきた数字に書き換え
sudo cp /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/lib/tools.jar /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib

ということで、▼を実行して確認です。

# cd アプリのディレクトリに移動
cordova run android

無事アプリが起動できました。