開発中のWebアプリをローカルに立ち上げて接続したい

ホストOSに開発中のWebアプリを立ち上げてエミュレータから接続したい。

開発時はhttpであることがほとんどなので、アプリからhttpで接続したいが、 Android 9以降はHTTP通信がデフォルトでは許可されない。

releaseビルドではhttpsのみの接続としたいのでdebugビルドのみhttpを許可する設定を行なう。

アプリのhttp通信を許可する

ネットワーク接続設定のxmlファイルを作成(debugビルド)

debugビルド用の設定、app/src/debug/res/xml/network_security_config.xmlを作成。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="false">10.0.2.2</domain>
    </domain-config>
</network-security-config>

domainに指定するのは接続先の指定。

ここではホストOSへの接続(10.0.2.2)を許可している。

参考: エミュレータでホストOSのWebサーバに接続する

ネットワーク接続設定のxmlファイルを作成(release環境)

releaseビルド用にはapp/src/release/res/xml/network_security_config.xmlを作成。

releaseビルドではhttpsのみ許可(=デフォルト)としたいので、設定内容は空にしておく。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config />

AndroidManifest.xmlに接続設定を追加

AndroidManifest.xmlapplicationタグにandroid:networkSecurityConfig属性を追加し、 作成したxmlファイル(network_security_config.xmlを作成したので @xml/network_security_config)を指定する。

<application
  ...
  android:networkSecurityConfig="@xml/network_security_config"
  ...>

以上で、debugビルド時のみ10.0.2.2へのhttp接続が可能となる。