# Cordova 10 の変更点

## Android

* Cordova Android プラットフォーム: 「9.0.0」 にアップデート （ API レベル 29 ）
* Gradleバージョン: 「6.5」 にアップデート

## iOS

* Cordova iOS プラットフォーム: 「6.1.1」 にアップデート
* Xcode: 「11.3」  (Xcode 12 サポートは、別途お知らせいたします。)

## iOSアプリアイコン (20x20)

iOS アプリアイコンのサイズ `20x20` の登録が必要となります。\
次の手順にて登録をお願いいたします。

1. Monaca クラウド IDE から **`設定 → iOSアプリ設定`**  を選択
2. アイコン セクションの「20 x 20」に画像を登録

## WKWebViewの注意点

Cordova 10 からは、iOS で利用されるWebViewについて、従来の「UIWebView」から「WKWebView」に更新されました。Cordova 10 のプロジェクトでは、UIWebView を利用できなくなりましたので、ご注意ください。

参考：[WKWebViewの注意点](https://press.monaca.io/takuya/4767)

## Custom Scheme プラグインの削除

Cordova 10 より「Custom Scheme」プラグインと同等の機能を、Cordova が標準搭載します。そのため、プラグインとして提供していました「Custom Scheme」プラグインは不要となり、プロジェクトでご利用されていた場合は、プロジェクトから削除されます。

また、Cordova に搭載された機能を利用するため、下記の設定が「config.xml」に追加されます。

```markup
<platform name="ios">
  <preference name="scheme" value="monaca-app"/>
  <preference name="hostname" value="localhost"/>
</platform>
```

## iOS LocalStorageデータの引継ぎ

Cordova 10では、WebViewが「UIWebView」から「WKWebView」に変更となりました。\
そのため、LocalStorageデータの引継ぎは、Cordova9で「WKWebViewEngineプラグイン」を利用していた場合のみ対応が可能となっております。\
また、Cordova 9のプロジェクトにおける、CustomSchemeプラグインの利用有無によりデータ引継ぎの方法が、下記のとおり異なります。

※ Cordova 9でUIWebViewを利用していた場合は、Cordova 10からはWKWebViewが利用されるため、LocalStorageデータを引継げません。\
また、Monacaカスタムデバッガーにおいても、LocalStorageデータの引継ぎは対応しておりませんのでご注意ください。

### CustomSchemeプラグインを利用していた場合

既存のCordova 9プロジェクトにおいて、CustomSchemeプラグインを利用していた場合は、\
CustomSchemeプラグインを削除し、`config.xml`のpreferenceを以下のとおり更新します。

```markup
<preference name="scheme" value="monaca-app"/>
<preference name="hostname" value="monaca.io"/>
```

## Android 外部ストレージの注意点

Cordova 10 から標準利用される Android 10（API レベル 29）において、データ保存領域についてのセキュリティが変更されました。この変更により一部のプラグインでは、追加の設定が必要になることがあります。

Monaca 提供のプラグインについては、「cordova-plugin-media-capture」が該当します。Android 用ストア版 Monaca デバッガーでは、「cordova-plugin-media-capture」のデータの保存先にアクセスするため、 「requestLegacyExternalStorage」設定が適用されています。

ビルドしたアプリやカスタムビルドデバッガーにおいては、「cordova-plugin-media-capture」を利用する際に、「config.xml」の widget タグに `andorid 名前空間` 設定を追加し、 `requestLegacyExternalStora` 設定を追加する必要があります。

```markup
<widget xmlns:android="http://schemas.android.com/apk/res/android">

<platform name="android">
  <edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
    <application android:requestLegacyExternalStorage="true"/>
  </edit-config>
</platform>
```
