CordovaのAndroidプラットフォーム10系について
Monacaチームの小田川です。
Monacaで利用しているCordovaでは、Android Studio用のプロジェクトやXcode用のプロジェクトをベースとしたプラットフォーム
と呼ばれるプロジェクトが使用されています。
Monacaで開発するアプリの場合、このプラットフォームは、ビルドの際に必要になります。プラットフォームは、Monacaプロジェクトに設定されているプラットフォームのバージョンに合わせてビルドサーバ側で自動的にインストールされ利用されています。
Cordova 10用のMonacaプロジェクトの場合は、MonacaクラウドIDEのメニュー、
- ビルド > ビルド環境の設定 > IOS > プラットフォーム
- ビルド > ビルド環境の設定 > ANDROID > プラットフォーム
- ビルド > ビルド環境の設定 > ELECTRON > プラットフォーム
から、プラットフォームのバージョンを選択できるようになっています。
Androidプラットフォーム10系
現在、Cordova 10用のMonacaプロジェクトで提供されているAndroidプラットフォームのバージョンは「9系」になりますが、最新版では「10系」の「10.1.0」がリリースされています。
Androidプラットフォーム10系では、新しい機能も提供されていますが、これまでとは仕様が変更されている機能もあります。Androidプラットフォーム10系の変更点については、下記を参照してください。
- cordova-android
- Cordova Android 10.0.0 Released!
- Cordova Android 10.0.1 Released!
- Cordova Android 10.1.0 Released!
今回は、Androidプラットフォーム10系未満から10系へ変更した際の注意点を見ていきたいと思います。
Androidプラットフォーム10系の注意点
AndroidXのみサポート
Androidプラットフォーム10系からは、AndroidXが採用されているため、従来のAndroidサポートライブラリーを使用することが出来ません。そのため、Monacaプロジェクトでサードパーティー製Cordovaプラグインを使用している場合、対象のCordovaプラグインで従来のAndroidサポートライブラリーが使用されている場合は、ビルドエラーが発生します。
回避策としては、cordova-plugin-androidx-adapterのような従来のAndroidサポートライブラリーをAndroidXへ変換するCordovaプラグインを利用することで回避することが出来ます。
WebViewAssetLoaderのサポート
Cordovaでは、リソースにアクセスする際に「file://」スキームが使用されています。Androidプラットフォーム10系からは、WebViewAssetLoaderがサポートされたことにより、リソースにアクセスする際のデフォルトのスキームが、「file://」スキームから「https://
」スキームに変更されています。この「https://」スキームは、カスタムスキームとして設定されています。
リソースが「http(s)://」からアクセスされることで、WebView内ではWebViewAssetLoader経由で処理されるようになります。
スキームの設定は、cookie
やLocalStorage
、IndexDB
等のアプリデータのアクセスに影響するため、Androidプラットフォーム10系未満から10系へ変更した場合は、これらのアプリデータにアクセスすることが出来なくなります。そのため、Monacaプロジェクトで上記のアプリデータを使用している場合は、アプリデータの移行を検討する必要があります。
従来の「file://」スキームを使用したい場合は、以下のように、Monacaプロジェクトのconfig.xmlにAndroidInsecureFileModeEnabled
設定を追加することで対応することが出来ます。
<!-- AndroidInsecureFileModeEnabledの設定例 -->
<platform name="android">
<preference name="AndroidInsecureFileModeEnabled" value="true" />
</platform>
おわりに
今後、MonacaでもAndroidプラットフォーム10系に対応していく予定です。Androidプラットフォーム10系は、既存アプリの動作に影響が発生する可能性のあるアップデートになっています。そのため、MonnacaプロジェクトをAndroidプラットフォーム10系に変更した際に、アプリの動作に影響が発生する可能性がないか、今から確認することをお勧めいたします。