またはでローカルホストWebサーバーページに接続するためにAndroidエミュレーターで何ができますhttp://localhostかhttp://127.0.0.1?
私はそれを試しましたが、エミュレータはそれでもローカルホストのGoogle検索のように私の要求を受け取ります。さらに悪いことに、Webサーバーが通常実行されているときにページが見つからなかったと表示されます。
またはでローカルホストWebサーバーページに接続するためにAndroidエミュレーターで何ができますhttp://localhostかhttp://127.0.0.1?
私はそれを試しましたが、エミュレータはそれでもローカルホストのGoogle検索のように私の要求を受け取ります。さらに悪いことに、Webサーバーが通常実行されているときにページが見つからなかったと表示されます。
ローカルホストとは、コードが実行されているデバイス(この場合はエミュレーター)を指します。
Androidシミュレーターを実行しているコンピューターを参照する場合は、代わりにIPアドレス10.0.2.2を使用してください。
あなたはここからもっと読むことができます。
10.0.2.2デフォルトのAVDと10.0.3.2genymotion
に使用します。
自宅のマシンで10.0.2.2を正常に使用しましたが、職場では機能しませんでした。何時間も浮気した後、 Android Virtual Device (AVD)マネージャーを使用して新しいエミュレーターインスタンスを作成し、最終的に10.0.2.2が機能しました。
他のエミュレータインスタンス(プラットフォームは同じ)の何が問題だったのかわかりませんが、10.0.2.2が機能しない場合は、新しいエミュレータインスタンスを作成してみてください。
http://10.0.2.2:8080/ポート番号はどこに8080ありますか?それは完璧に機能しました。試してみるだけ10.0.2.2ではうまくいきません。ポート番号を追加する必要があります。また、Microsoft IISがインストールされている場合は、コントロールパネルからその機能をオフにして(Windows OSを使用している場合)、上記のように試してください。
localhost:8000エミュレーターを実行するたびに以下のコマンドを実行することで、実際にマシンのローカルホストに接続するために使用できます(Macでのみテスト済み)。
adb reverse tcp:8000 tcp:8000
AndroidStudioターミナルに置くだけです。
基本的に、電話で実行されているhttpサーバーがポートで接続を受け入れてコンピューターに接続するリバースプロキシを設定します。その逆も同様です。
ドキュメントによると:
10.0.2.2-ホストループバックインターフェイスの特別なエイリアス(つまり、開発マシンの127.0.0.1)
エミュレータネットワークのその他のトリックについては、エミュレータネットワーキングを確認してください。
エミュレータ「NoxAppPlayer」のシステムホストIPアドレスを把握する必要がありました。これが私がそれがあったことをどのように理解したか172.17.100.2です。
ip link showして、すべてのネットワークインターフェイスを表示します。特に興味深いのはeth1インターフェースでしたifconfig eth1し、ネットを次のように表示します172.17.100.15/255.255.255.0172.17.100.1、`172.17.100.2'でヒットしました。ファイアウォールが干渉するかどうかはわかりませんが、私の場合は干渉しませんでしたたぶん、これは他の誰かが他のエミュレーターのためにそれを理解するのを助けることができます。
これらのIPによってPCローカルホストに接続できます:
10.0.2.2:{port of your localhost}=> xampでマシンポートを設定する場合は、そのポートを使用する必要があります。私の場合10.0.2.2:2080
また、ネットワークアダプタのIPを使用することもできます。CMDipconfigでアダプタのIPアドレスを記述して見つけます。
エミュレーターがこのIPに接続できない場合は、エミュレーターを閉じて、cold bootAVDマネージャーから開きます。
このIPでマシンlocalhostに接続できます:10.0.3.2:{port number}
または上記で説明したようにアダプタのIPアドレス:私の場合:192.168.1.3:2080
Windowsを使用している場合は、simbolシステムに移動してipconfigを記述し、マシンに割り当てられているIPを確認できます。
まず、Androidデバッグブリッジをインストールします。
$ sudo apt install adb android-sdk-platform-tools-common
通常どおりAndroidエミュレータを起動します。例:
$ ~/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86
その場合にのみ、Androidエミュレーターのブリッジにリバースプロキシlocalhostを構成して、ホストコンピューターで実行されているサーバーの適切なポート(8000など)にHTTP要求を転送localhostします。その逆も同様です。
$ adb reverse tcp:8000 tcp:8000
プログレッシブウェブアプリケーション(PWA)が提供されているlocalhost:8000
か127.0.0.1:8000 、インストール可能であり、に接続されますservice-worker.js。一方、PWAのインストールはIPアドレスから許可されていません10.0.2.2。
警告: Androidエミュレーターを呼び出すたびにadb reverse tcp:8000 tcp:8000再発行する必要があります。
したがって、Androidエミュレーターを起動し、その後にリバースプロキシを実行するbashスクリプトは、次のようになります。
#!/usr/bin/env bash
$HOME/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86 > /dev/null 2>&1
adb reverse tcp:8000 tcp:8000
別の回避策は、no-ip.orgから無料のドメインを取得し、それをローカルIPアドレスにポイントすることです。次に、使用http://localhost/yourwebserviceする代わりに試すことができますhttp://yourdomain.no-ip.org/yourwebservice
わかりませんが、このトピックはすでに解決されているかもしれませんが、最近Windowsマシンでこれを実行しようとすると、多くの問題に直面しました。だから私の解決策は本当に簡単でした。このソフト http://www.lenzg.net/rinetd/rinetd.htmlをダウンロードし、ポートフォワーディングを作成する方法についての指示に従い、Androidデバイスを接続してasp.net localhostプロジェクトを作成し、ブレークポイントで停止しました。
私のrinetd.confファイル:
10.1.1.20 1234 127.0.0.1 1234
10.1.1.20 82 127.0.0.1 82
10.1.1.20は私のローカルホストIP、82および1234は私のポートです。また、yournameofbathfile.batを簡単に使用できるように、バスファイルを作成しました。そのファイルをrinedfolder内に配置します。私のバスファイル:
rinetd.exe -c rinetd.conf
このソフトを起動した後、aps.netサーバーを起動し、Androidデバイスまたはローカルネットワーク内の任意のデバイスからアクセスしてみてください(たとえば、コンピューターABCがパテを起動します)。すべてが機能することがわかります。ルーターの設定やその他の複雑なことをする必要はありません。これがお役に立てば幸いです。楽しみ。
これは古いことは知っていますが、10.0.2.2がコンピューターのIPとして機能していないことがわかった場合は、次の手順に従って見つけてください。
10.0.2.2は、ベースマシンlocalhost用に作成されたものです。
同じポート番号:1521変更する必要はありません
absは私にとってはうまく機能します..