またはでローカルホスト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.2
genymotionに使用します。
自宅のマシンで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.0
172.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 boot
AVDマネージャーから開きます。
この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は私にとってはうまく機能します..