引き続きAndroid開発ケースの一部を共有します。次に、エミュレーターで実行されているアプリケーションをローカルWebサーバーにあるサーバーAPIで動作させる方法についてお話したいと思います。 簡単に言えば-httpを介してローカルホストとエミュレーターからアプリケーションを通信する方法。 これらは専門的なアドバイスではありませんが、特定の実用的なソリューションの例にすぎません。
問題の状態から始めましょう。
前回説明した私のアプリケーションには、携帯電話でオンラインギャラリーに図面を公開する機能が必要でした。 私の場合、ギャラリーは独自のサイトであり、POSTリクエストで画像とテキスト変数を受け取ります。
Denwerは 、WebサーバーをエミュレートするためにWindowsベースのマシンで起動されました; httpを介したギャラリープロジェクトへのアクセスは、url _http://dev.galleryによって編成されました。
そのため、問題は、エミュレータがホストの説明を含む独自のホストを認識せず、したがって、_http://dev.galleryを認識しないことです。 プロジェクトをlocalhost / dev.galleryに配置しようとしても、エミュレーターの127.0.0.1はそれ自身であるため、何も起こりません。 この問題は、エミュレーターホストに変更を加えることで解決されます。 具体的には、行
10.0.2.2 dev.gallery
。 マシンでホストされているサービスにアクセスする場合は、このアドレスを使用する必要があります。 アドレス空間アドレスの完全なリストは
こちらです。
適切な変更を行うには:
- エミュレータコマンド
emulator -avd -partition-size 128
を使用して、手でエミュレータを実行します - 新しいコンソールウィンドウで、
adb remount
実行します - デバイスから
adb pull /system/etc/hosts c:\hosts
ドライブadb pull /system/etc/hosts c:\hosts
のルートにホストをコピーしadb pull /system/etc/hosts c:\hosts
- 受信したファイルをテキストエディターで開き、必要な変更を加えます。 ちなみに、localhostフォルダー全体へのアクセスを許可する必要がある場合は、
127.0.0.1 localhost
行(ほとんどの場合、ファイル内のデータ行のみ)の10.0.2.2 localhost
を10.0.2.2 localhost
に変更できますが、kosherではありません。 - ホストを
adb push c:\hosts /system/etc
デバイスadb push c:\hosts /system/etc
その後、Webサーバーを安全にノックできます。 エミュレータを再起動した場合、ホストを再度交換する必要があります。 作業を高速化するには、必要なパラメーターとエミュレーターを起動する1つのcmdファイルと、必要に応じて事前に準備されたホストを置き換えるcmd-fileを作成して使用すると便利です。
これはすべて、
PaintUpアプリケーションと
PaintUp.netギャラリーの操作をデバッグするときに使用されました。