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 Android ビルド時に「'android.useAndroidX' property is not enabled」となる場合の対処方法
- Cordova で Splash Screen を設定する cordova-plugin-splashscreen
- Cordova でネイティブダイアログを呼び出す cordova-plugin-dialogs
- Cordova で iOS, Android エミュレータの起動がうまくいかない場合の対処法
- Cordova Android で iframe 内のリンクをシステムデフォルトブラウザで開く方法
- JavaScript で URL のクエリパラメータを操作する方法
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)