🌀
android端末からPCのローカルサーバにアクセスする方法
PC内で立てたローカルサーバにアクセスする必要があったので調べた
同じwifiに繋がっている時
同じwifiにいる場合pcのipアドレス+ポート番号でローカルサーバにアクセスできる
プライベートipを直接指定する形になるので、プログラムに組み込むのは現実的ではなさそう
手順
- PCに割り当てられているipアドレスを取得
- ↑で取得したipアドレスに端末側からアクセスする
同じwifiに繋ぐのがめんどくさい or ipアドレスではなくlocalhostで接続したい時
手順
- pc上でローカルサーバを起動
- Android端末でChromeを起動しておく(ChromeがForegroundにある状態)
- usbデバッグを有効化したAndroid端末をPCに接続
- chromeで
chrome://inspect/#devices
にアクセス(デバックの許可を求められたら許可する) -
Port forwarding...
をクリックする
- 右欄にローカルサーバのipアドレス+ポート番号を入力、左欄に端末側でサーバアクセスする時のポート番号を入力
- Enable port forwardingをクリックして有効化
- Doneで終了し、端末のブラウザで
localhost:[↑で設定したポート番号]
にアクセスすれば、pc内のローカルサーバにアクセスできる
毎回chromeのinspectを起動しなければならないが、hostがlocalhostに固定できるので、プログラムに組み込んでも問題なさそう。
エミュレータの場合
build.gradleでPCのアドレスを取得し、環境変数に設定する
// build.gradle(app)
android {
...
buildTypes {
// PCのIPアドレスを取得
def host = InetAddress.getLocalHost().getCanonicalHostName()
debug {
// ipを環境変数として扱える様に
buildConfigField "String", "LOCAL_SERVER_IP", "\"${host}\""
}
}
}
※追記: 上の様にしなくても、127.0.0.1
のエイリアスが10.0.2.2
の様なので、ホストにこのエイリアスを使用すれば良さそう
ngrokを使う
公式サイトからアカウント登録して自分のPCにインストールして、アカウントの認証して実行すれば任意のポートを公開することができる。
詳しいやり方は公式サイトに書いてあるのを見ればなんとなく理解できるはず。
設定すればbasic認証も無料でかけれるので便利。
Discussion