5

Apacheで仮想ホストとして構成されたWebサービスに接続する単純なアプリを開発しているので、そのURLはmyapp.localhostです。

私の開発マシン(Mac OS X)では、iPhoneエミュレーターからもアクセスできます。しかし、Androidエミュレーターで問題が発生しています。/etc/hostsファイルを使用して「myapp.localhost」ドメイン名を解決していないため、そのURLに到達できません。

Appcelerator Titanium(appcelerator.com)を使用しているため、「adb」を使用してカスタムホストファイルをAndroidエミュレーターに挿入することはできません。

Androidエミュレーター用にその仮想ホストを変換するためにMacOSXシステムにインストールできるDNSサーバーまたは同様のものはありますか?

4

1 に答える 1

11

あなたは最終的に問題を解決する方法を見つけたと思います。それでも、私は、私たちがかつて持っていたのと同じ問題に苦しんで、周りを探している人々のために可能な答えを与えます。

Androidデバイスは(iOSデバイスとは対照的に)エミュレートされてシミュレートされていないため、実際には独自のカーネル、構成ファイル...および独自のがあり/system/etc/hostsます。ただし、実際にはTitaniumでadbを使用できます。注意する必要があります。Titaniumはtiapp.xmlに基づいてカスタム生成された仮想デバイスを使用するため、仮想デバイスがデバイスリストに表示される前に、アプリケーションを少なくとも1回実行する必要があります。

仮想デバイス以外のものがある場合は、最初にTitaniumによって生成されたデバイスの名前を取得する必要があります(通常はエミュレーター-XXXX)。

adb devices

次に、それをマウントし、adb pushおよびpullコマンドを使用し/system/etc/hostsて、エミュレーターのシステムから取り出し、編集して、プッシュバックすることができます。-s emulator-XXXXこれらのコマンドを実行するデバイスを指定します。デバイスが1つしかない場合は、このオプションをスキップできます。詳細については、 adbdocを参照してください。

adb -s emulator-XXXX remount
adb -s emulator-XXXX pull /system/etc/hosts /whatever/directory/

これで、お気に入りのエディターで編集/whatever/directory/hostsし、必要なホストを追加できます。開発マシンのローカルホストインターフェイスにアクセスする必要がある場合10.0.2.2は、コンピュータのループバックインターフェイスへのリンクです。ホストに追加10.0.2.2 myapp.localhostして、仮想デバイスにプッシュバックするだけです。

adb -s emulator-XXXX push /whatever/directory/hosts /system/etc/hosts

Titaniumを使用してシミュレーターを再起動すると、うまくいくはずです。

于 2011-08-09T12:22:02.647 に答える