Cordova Android で net::ERR_CLEARTEXT_NOT_PERMITTED の解決方法
はじめに
Cordova Android アプリで HTTP(≠ HTTPS) 通信をした際に出る net::ERR_CLEARTEXT_NOT_PERMITTED
エラーの解決方法
TL;DR
- Android P から
cleartextTrafficPermitted="false"
がデフォルトになった- 非暗号化(HTTP)通信がエラーになる
AndroidManifest.xml
にandroid:usesCleartextTraffic="true"
を追加すれば HTTP 通信を許可できる- Cordova Android:
platforms/android/app/src/main/AndroidManifest.xml
- Cordova Android:
config.xml
にedit-config
を追加すれば OK- Cordova 9.0 環境だと問題が起きるが、8.0 や 10.0 だと問題ない(っぽい)
目次
環境・条件
1 | $ sw_vers |
Android 検証機: Huawei nova lite 2 (Android 9) (公式)
詳細
参考:
- Cordova 9.0にバージョンアップする際にハマったこと - Qiita
- Android PでtargetSdkVersionを28に指定した場合にHTTP通信が失敗する - Qiita
- Androidアプリ開発で net::ERR_CLEARTEXT_NOT_PERMITTED のエラー発生
基本的に参考サイトに書かれている通り、以下 抜粋/補足追加/整理 した概要。
- Android P から
cleartextTrafficPermitted="false"
がデフォルトになった- 非暗号化(HTTP)通信がエラーになる
AndroidManifest.xml
にandroid:usesCleartextTraffic="true"
を追加すれば HTTP 通信を許可できる- Cordova Android:
platforms/android/app/src/main/AndroidManifest.xml
- Cordova Android:
config.xml
にedit-config
を追加すれば OK- Cordova 9.0 環境だと問題が起きるが、8.0 や 10.0 だと問題ない(っぽい)
ということで、(Cordova 9.0 環境でない限りは) config.xml
に edit-config
を追加すれば解決する(はず)。
1 |
|
まとめ
- Android P から
cleartextTrafficPermitted="false"
がデフォルトになった- 非暗号化(HTTP)通信がエラーになる
AndroidManifest.xml
にandroid:usesCleartextTraffic="true"
を追加すれば HTTP 通信を許可できる- Cordova Android:
platforms/android/app/src/main/AndroidManifest.xml
- Cordova Android:
config.xml
にedit-config
を追加すれば OK- Cordova 9.0 環境だと問題が起きるが、8.0 や 10.0 だと問題ない(っぽい)
参考文献
- Androidアプリ開発で net::ERR_CLEARTEXT_NOT_PERMITTED のエラー発生
- Cordova 9.0にバージョンアップする際にハマったこと - Qiita
- Android PでtargetSdkVersionを28に指定した場合にHTTP通信が失敗する - Qiita
- usesCleartextTraffic -
| Android デベロッパー | Android Developers - edit-config - Plugin.xml reference documentation - Apache Cordova
関連記事
- Vue + Cordova + Firebase でプッシュ通知
- Cordova でアプリ名やアプリのバージョン情報などを取得
- Cordova で端末やエミュレータを指定してデプロイする
- Cordova QR コードスキャナのプラグイン追加でビルドできない問題の対応方法
- Cordova Android ビルド時に「'android.useAndroidX' property is not enabled」となる場合の対処方法
- Cordova Android で iframe 内のリンクをシステムデフォルトブラウザで開く方法
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア