Ionic CordovaのAndroidでlivereloadできない時
Ionic CordovaでアプリをAndroid向けに開発するときに、livereloadが動いていませんでした。本記事ではその解決方法を紹介します。
実行したのは次のコマンドです。
ionic cordova emulate android --livereload --external
エラー内容
エミュレータのAndroidの画面には次のようなエラーが表示されました。
Application Errornet::ERR_CLEARTEXT_NOT_PERMITTED (http://0.0.0.0:8100/)
ちなみにiOSの方では問題なくlivereloadできていました。
これで検索するとよくcleartextTrafficPermitted
やandroid:usesCleartextTraffic="true"
についての話が出ますが、これだけでは足りませんでした。
解決
Ionic Forumの投稿を参考に解決しました。具体的な対応手順は次のとおりです。
プライベートIPアドレスを調べる
まずはプライベートIPアドレス(ローカルIPアドレス)を調べます。
ここらへんはOSによって違うので各自で調べてください。ifconfig
、ipconfig
、ip
とかです。
xmlの編集
resources/android/xml/network_security_config.xml
に次のようにIPアドレスを書きます。
<?xml version="1.0" encoding="utf-8"?><network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">my IP address</domain> // ... </domain-config></network-security-config>
ホストを指定する
実行時にオプション--host
にIPアドレスを指定します。
ionic cordova emulate android --livereload --external --host=<my IP address>
以上です。
あくまでもローカルでエミュレータを動かして確認する時の対応であるため、IPアドレスを書いたままnetwork_security_config.xml
をコミットしないようにしましょう。
筆者の環境
念の為、筆者の環境も書いておきます。古いです😣
ionic info
Ionic:
Ionic CLI : 6.20.3 (/Users/eetann/.local/share/mise/installs/npm-ionic-cli/6.20.3/lib/node_modules/@ionic/cli) Ionic Framework : ionic-angular 3.9.10 @ionic/app-scripts : 3.2.4
Cordova:
Cordova CLI : 12.0.0 ([email protected]) Cordova Platforms : android 8.0.0, ios 5.0.1 Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 3.1.2, (and 15 other plugins)
Utility:
cordova-res : 0.15.4 native-run : 2.0.1
System:
Android SDK Tools : 26.1.1 (/Users/eetann/Library/Android/sdk) ios-sim : 8.0.2 NodeJS : v14.21.3 (/Users/eetann/.local/share/mise/installs/node/14.21.3/bin/node) npm : 6.14.18 OS : macOS Unknown Xcode : Xcode 16.0 Build version 16A242d
livereloadできない時の対応でした。最近アプリ開発を始めたばかりなのでXcodeやAndroid Studioとよく格闘しています。