Cordova 9.0のAndroidビルドにつて
Monacaチームの小田川です。
2023年4月中旬以降、Cordova 9.0のAndroidビルドで、下記のようなJCenter
に関連するビルドエラーが継続的に発生しています。
A problem occurred configuring root project 'android'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not resolve org.ow2.asm:asm:6.0.
Required by:
project : > com.android.tools.build:gradle:3.3.0
project : > com.android.tools.build:gradle:3.3.0 > com.android.tools.build:builder:3.3.0
project : > com.android.tools.build:gradle:3.3.0 > com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02
> Could not resolve org.ow2.asm:asm:6.0.
> Could not parse POM https://jcenter.bintray.com/org/ow2/asm/asm/6.0/asm-6.0.pom
> Could not resolve org.ow2.asm:asm-parent:6.0.
> Could not resolve org.ow2.asm:asm-parent:6.0.
> Could not parse POM https://jcenter.bintray.com/org/ow2/asm/asm-parent/6.0/asm-parent-6.0.pom
> Could not resolve org.ow2:ow2:1.3.
> Could not resolve org.ow2:ow2:1.3.
> Could not get resource 'https://dl.google.com/dl/android/maven2/org/ow2/ow2/1.3/ow2-1.3.pom'.
> Could not GET 'https://dl.google.com/dl/android/maven2/org/ow2/ow2/1.3/ow2-1.3.pom'.
> Read timed out
JCenterについては、JCenterの閉鎖についてでも案内しましたが、JCenterを管理しているJFrogは、JCenterを含むBintray等のサービスを2021年5月1日で終了する案内を行っており、現在、JCenterは、読み取り専用リポジトリとしてサービスが提供されている状況になっています。
今後、Cordova 9.0のAndroidビルドが安定する可能性もありますが、今回は、JCenterの設定と現状での回避策を説明していきたいと思います。
JCenterの設定について
JCenterの設定は、Androidプラットフォーム 10系未満
に設定されています。
Cordova 9.0で提供されているAndroidプラットフォームのバージョンは、8系
になります。Cordova 10系でもAndroidプラットフォーム 9系を提供していますが、現在のところ、Androidプラットフォーム 8系で上記のようなエラーが発生しています。
ビルドの際に参照さ れるライブラリーのバージョンは、Androidプラットフォームに設定されているAndroid Gradleプラグインのバージョンも関係するため、今回発生しているエラーは、Androidプラットフォーム 8系で使用されているAndroid Gradleプラグイン 3.3.0
で発生している可能性があります。
また、JCenterの設定は、Cordovaプラグイン側でも設定されている場合があります。定期的にメンテナンスが行われているCordovaプラグインの場合は、JCenterの依存設定を改修しているケースが多くみられますが、メンテナンスが行われていないCordovaプラグインの場合は、JCenterの依存設定が行われている場合があります。そのため、メンテナンスが行われていないCordovaプラグインを使用している場合は、上記のようなエラーが発生する可能性があります。
回避策
現状での回避策は、対象のMonacaプロジェクトをCordova 9.0からCordova 10以降へアップグレードし、Androidプラットフォーム 9系以降を使用する必要があります。今後、JCenterに関するエラーを回避したい場合は、JCenterの依存設定が削除されたAndroidプラットフォーム 10系以降を使用する必要があります。
Androidプラットフォームの設定は、MonacaクラウドIDEの下記のメニューから行うことができます。
- ビルド - ビルド環境の設定 - ANDROID
Cordovaプラグイン側にJCenterの依存設定が行われている場合は、対象のCordovaプラグインを改修する必要があります。現状、Cordovaプラグイン側にJCenterの依存設定が行われている場合は、メンテナンスが行われていないため、利用者側で改修したカスタム版のCordovaプラグインを作成して使用するか、他のサードパーティー製Cordovaプラグインを利用する必要があります。
おわりに
現在、JCenterについては、読み取り専用リポジトリとしてサービスが提供されていますが、終了が案内されているサービスになります。今後、今回発生しているエラーがAndroidプラットフォーム 9系でも発生する可能性があります。そのため、早めにJCenterの依存設定が削除されたAndroidプラットフォーム 10系以降を使用することをおすすめします。