10

次の問題があります。

カスタム ホスト ファイルを作成して、アプリケーションのいくつかの機能をテストし、それを Android エミュレーターにプッシュします。問題は、これらの設定がすぐに有効にならないことです。アクティブになるまで 10 分ほど待たなければなりません。

私の質問は次のとおりです。新しいホストファイルを即座にアクティブにする方法は? テストするさまざまな設定がたくさんあり、毎回 10 分待つことはできません。

4

3 に答える 3

5

Java は独自の内部 DNS キャッシュを維持します。オペレーティング システムは新しいホスト ファイルをすぐに反映しますが (pingコマンド ラインでそれを確認します)、何もキャッシュしないように Java に指示する必要があります。次の行をテスト アプリケーションに追加します。

System.setProperty("networkaddress.cache.ttl" , "0"); System.setProperty("networkaddress.cache.negative.ttl" , "0");

これらのプロパティの詳細については、http: //docs.oracle.com/javase/7/docs/technotes/guides/net/properties.htmlを参照してください。

于 2011-01-29T23:56:04.887 に答える
2

ルート化された Samsung Galaxy S でホスト ファイルを編集したところ、変更がすぐに反映されました。おそらく、あなたが見ている問題は ADB に関係しているのでしょうか?

これは私がしました:

  1. Busybox を使用して、hosts ファイルを編集可能な場所にコピーしますcp /etc/hosts /mnt/sdcard/hosts.new
  2. /mnt/sdcard/hosts.newプリインストールされているテキスト エディターを使用して編集し、必要な 2 つのエントリを追加します。IP、非修飾ホスト名、FQDN などを使用192.168.2.81 siva siva.myinventeddomain.org.auしましたが、理論上は他の形式も機能するはずです。
  3. BusyBox でsu、root に戻ります。
  4. /systemデフォルトではroなので、mount -o remount,rw /system;でrwにする必要がありました。
  5. 後で入力する手間を省くためにcd /etc(シェル プロンプトに では/system/etcなく が表示されたため/etc、シンボリック リンクの悪ふざけが疑われます)。
  6. 127.0.0.1 localhost; を使用して、デフォルトのホスト ファイル (のみを含む) をバックアップしますmv hosts hosts.old
  7. mv /mnt/sdcard/hosts.new hosts;を使用して新しいホスト ファイルをインストールします。
  8. 実行sync(単に私が妄想的だからです。これは必要ないはずです);
  9. /systemfs ro をmount -o remount,ro /system;で再マウントします。
  10. BusyBox を終了します。
  11. Web ブラウザ (FireFox) を起動sivaし、結合された URL/検索フィールドに入力します (siva追加した 2 つのホスト エントリの 1 つです)。

これらの変更の前は、ステップ 11 で 'siva' などの愚かな Google 検索が行われていました。それらの直後に、予想どおり、LAN httpd 仮想ホストのフロント ページが表示されます。

動作してから動作しないまでに 10 分もかかりませんでした。

Sun の Java doco へのリンクは、関連する場合と関連しない場合があります (おそらく関連していません)。Android には Java VM がまったく含まれていません。Sun の VM は言うまでもありません。Dalvik と呼ばれる別の VM を実行します - ウィキペディアのエントリを参照してください: http://en.wikipedia.org/wiki/Dalvik_%28software%29

Java によく似た言語で Android フォンをプログラミングできるという事実は、的外れです。

于 2011-10-22T01:51:16.160 に答える
0

hosts ファイルは試していません。しかし、カスタムDNSを使用してみました...

  1. どこかで DNS サーバーを開始します (DD-WRT をロードしたり、派手なルーターを使用したり、PC でデーモンを実行したりできます)。
  2. オプション: 実行中の DNS サーバーの場所を使用してローカル ルーター (DHCP サーバー) を構成します (DNS サーバー リストの最初にします)。
  3. スキップする場合 #2: 電話を静的 IP 用に構成します (Wi-Fi 設定 -> メニュー ボタン -> 詳細設定)。DNS1 をサーバーに設定します。
  4. スマートフォンを WIFI 経由でこのネットワークに接続します。

やった!これで、DNS 名/IP ペアリングをリース時間とともに管理できるようになりました (たとえば、電話は必要に応じて 30 秒ごとに IP を更新します)。やや複雑ですが、ホストファイルを電話にロードする必要はありません:-)。

于 2011-01-29T23:23:56.090 に答える