web-dev-qa-db-ja.com

Androidの低ネットワーク接続をシミュレートします

ネットワーク接続が低い場合にアプリケーションをテストしたいと思います。エレベーターに立つことを除いて、これを行う最善の方法は何ですか?携帯電話をアルミホイルで包んでみましたが、あまり役に立ちませんでした。

エミュレータではなく、実際のデバイスでテストする必要があります。

177
Maggie

これにはエミュレータを使用できます。このページをご覧ください: Android Emulator 。次の2つの引数に注意してください。

  1. -netdelay <delay>

    ネットワーク遅延エミュレーションをに設定します。デフォルト値はなしです。サポートされる値については、ネットワーク遅延エミュレーションの表を参照してください。

  2. -netspeed <speed>

    ネットワーク速度エミュレーションをに設定します。デフォルト値はいっぱいです。サポートされる値については、ネットワーク速度エミュレーションの表を参照してください。

96
inazaruk

これは少し奇妙に聞こえるかもしれませんが、電子レンジは電子レンジのシールドとして機能します。したがって、デバイスを電子レンジ内に置くと(デバイスが内部にある間は電子レンジの電源を入れないでください!)、信号強度が大幅に低下します。それは間違いなくエレベーターの中に立っていることを打ち負かします...

240
Shams Shafiq

iPhones開発者オプションはWi-Fiテザリングに適用されるため、iOS 6以上(およびxcodeuse for developmentsに設定されている)のiPhoneを取得し、目的のネットワークプロファイルをエミュレートするように設定して、接続します- Androidホットスポットへのデバイス

enter image description here

94
Kirill Kulakov

Android Studio v 1.5以降のアップデート
下のコメントで@LouMordaが言及したように、元の投稿で言及されたEmulatorname__タブはAndroid Studio v 1.5で削除されました。

これで、AVD Managerのシミュレーター設定にこれらの設定が配置されました。
これらの設定にアクセスするには:

  1. Tools -> Android -> AVD Managerを選択します
  2. Edit AVDボタン(鉛筆アイコン)をクリックします
  3. Network Settingsボタンをクリックすると、Show Advanced Settingsにアクセスできます

表示されるスクリーンショットは次のとおりです。
Network Speed and Latency Settings in Android Studio v 1.5

オリジナルポスト
Android Studio IDEを使用している場合:

  1. Run -> Edit Configurationsに移動します
  2. Android Application -> [Your App]を選択します
  3. Emulatorname__タブを選択します
  4. ここでは、Network SpeedNetwork Latencyの異なる値を変更して、異なる速度やレイテンシなどをシミュレートできます

または、@ inazarukの回答に記載されているように、Additional command line optionsテキストフィールドにさまざまな引数を入力できます。

以下のスクリーンショットは、このRun Configuration画面がどのように見えるかを説明しています。

Run Configurations Screen in Android Studio beta 0.8.6

私はこの質問に答えるのが少し遅れていることを知っていますが、これが同様の問題に直面している他の人を助けることを願っています!

編集
Eclipseを使用している場合は、以下の @ Abhiの回答 を参照してください。

60
S1LENT WARRIOR

私はそれが古い質問であることを知っていますが...

一部の携帯電話は現在、2Gのみ​​を利用する設定になっています。実際のデバイスで遅いインターネットをシミュレートするのに最適です。

enter image description here

37
Pkmmte

何歳か、ちょっと、Genymotionで私の絶対確実な方法でチャイムします。

  • Charlesの無料トライアルをダウンロードします。 http://www.charlesproxy.com/download/

  • インストールする

  • ClickProxy -> Throttle Settings

  • HTTPスロットル速度を設定する

  • そのウィンドウを閉じます

  • Proxy -> Throttlingをクリックしてスロットルを有効にします

  • Genymotionエミュレーターを開く

  • Wi-Fi設定を開きます

  • 有効なWi-Fi接続を長押しします

  • Modify Networkをクリックします

  • Show Advanced Optionsをクリックします

  • ProxyManualに設定します

  • Proxy hostname10.0.3.2に設定します

  • Port8888に設定します

  • Saveをクリックします

そして今、あなたのネットワークは絞られます!

32
VicVu

問題を解決するための戦略が1つあります。プロキシのアプリケーションを使用して、ネットステータスを変更または監視できます。例:Charles.

私が投稿した次の図のように、Charlesのデフォルト設定を変更する必要があります。

Open Your Throttle Setting

Setting Your Throttle Setting

そして最後に、ネットステータスがより低いペースに形成されていることがわかります。

Before

Setting After

11
Benchur Wong

エミュレータで接続が低い/悪い状態でアプリケーションをテストする簡単な方法:

移動実行> 実行構成Androidアプリケーションを選択し、そこでターゲットタブに移動します。 エミュレーター起動パラメーターを見てください。ここでは、ネットワーク速度とネットワーク遅延を簡単に変更できます。

8
pgarriga

見落とされているように見える実際のデバイスで低速をテストする簡単な方法があります。 Macとイーサネット(またはその他の有線)ネットワーク接続が必要です。

MacでWifi共有をオンにし、コンピューターをWifiホットスポットに変えて、デバイスをこれに接続します。 Netlimiter/Charles ProxyまたはNetwork Link Conditioner(すでにインストールされている場合があります)を使用して、速度を制御します。

詳細について、およびチェックアウト時にテストする速度の種類を理解するには: http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps -on-poor-connections /

8
James_OSM

Facebookは Augmented Traffic Control と呼ばれるものを作成しました。 GitHubページからの簡単な要約:

拡張トラフィック制御(ATC)は、ネットワークの状態をシミュレートするツールです。デバイスがインターネットに接続している接続を制御できます。開発者は、ATCを使用して、さまざまなネットワーク条件でアプリケーションをテストし、高速、モバイル、さらには深刻な障害のあるネットワークでも簡単にエミュレートできます。制御できる接続の側面は次のとおりです。

  • 帯域幅
  • 待ち時間
  • パケットロス
  • 破損したパケット
  • パケットの順序付け

ネットワークトラフィックをシェーピングできるようにするには、トラフィックをルーティングし、たとえばネットワークゲートウェイなどのデバイスの実際のIPアドレスを確認するデバイスでATCを実行する必要があります。また、これにより、ATCを経由するすべてのデバイスがトラフィックをシェーピングできるようになります。 Webインターフェイスを使用してトラフィックを整形/非整形することができ、クライアントアプリケーションを必要とせずに、Webブラウザを備えたすべてのデバイスでATCを使用できます。

GitHubで見つけることができます: https://github.com/facebook/augmented-traffic-control

彼らはそれについてのブログ投稿も書いています: https://code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/

6
Anirudh

また、実際のAndroidデバイスで低速のインターネット接続をテストすることもできます。

Samsung Galaxy S8 + Android 8.0.0でテスト済み

設定-> 接続-> モバイルネットワーク->に移動し、networkmodeで、使用のみを選択できます- 2GまたはG接続

6
rm -rf

誰もこれに言及していないことに驚いています。 Bluetooth経由でテザリングし、10メートル以上(障害物がある場合はそれ以下)離すことができます。 real接続が不良です。電子レンジ、エレベーター、ソフトウェアは必要ありません。

5
yhm

または、実際のデバイスでは、[設定]-> [モバイルネットワーク]-> [優先するネットワークタイプ]を選択し、利用可能な最も遅いネットワークを選択できます。

4
jpm

ネットワーク接続がないか、または低速なネットワーク接続のみをテストしますか?前者の場合は、Settings > Wireless & networks > Airplane modeに移動して、機内モードをオンにすることができます。これにより、実際のデバイスでネットワークの可用性をテストできます。

3
David Conrad

mac OSユーザーの場合、AppleからダウンロードできるNetwork Link Conditionerを使用できます。 MacのAPとして設定すると、あらゆるデバイスが接続できます。

facebookオープンソースツールATCを使用できます http://facebook.github.io/augmented-traffic-control/

3
Lucas Liu

私はこの問題に半日苦労していましたが、ついにこの解決策にたどり着きました。

  • 実際のデバイスでテストすることは、動作させるために多くの作業を行う必要があるため、全体としてあまり意味がありません。実際のテストを達成する唯一の論理的な方法は、電話会社がEdgeのような低品質の携帯電話ネットワークに接続することです。電話アプリで*#*#4636#*#*をダイヤルして、これを行うことができます。

  • 元のAndroidエミュレーターはテストするには遅すぎるため、上記のソリューション以上のものを達成できません。

これを行う最良の方法は、 Genymotion を使用することです。これはAndroidエミュレーターで、元のAVDよりもはるかに優れたパフォーマンスを備えており、個人使用のバージョンは無料です。

Genymotion emulator

Genymotionで仮想デバイスを作成したら、 このチュートリアル を実行して、デバイスのプロキシを設定します。

Crapify または Toxiproxy (前者のみをテストした)のような悪いネットワーク条件をシミュレートするホストマシンでプロキシサーバーを実行します。

更新:

実際のデバイスでも同じ戦略を選択できることに気付きました。私はそれをすぐに実現しないためのばかのように感じます。コンピュータでCrapifyプロキシを起動し、電話プロキシをコンピュータのローカルアドレスに設定するだけで、お使いの携帯電話で不正なインターネットが発生します。

2
Iman Akbari

Android studio AVDの更新:

  1. aVDマネージャーを開く
  2. aVDの作成/編集
  3. 詳細設定をクリックします
  4. ご希望の接続設定を選択してください

電子レンジやエレベーターはありません:)

2
nurxyz

Android St​​udioで、エミュレーターを実行中:

1-エミュレーターサイドバーの下部にある設定ボタンを押す

2-セルラーに移動

3-ネットワークタイプの設定

Screenshot

2
Mert Kahraman

[実行]> [実行構成]を選択し、Androidアプリケーションを選択して、[ターゲット]タブに移動します。図に示すように変更を行います。

enter image description here

2
Abhi

私はmitmproxyHTTPSプロキシを使用しています。 https://mitmproxy.org/

Mitmproxyは、HTTP(S)クライアント間のHTTPおよびHTTPS接続を傍受できるオープンソースプロキシアプリケーションです。これらの接続をリアルタイムで監視、キャプチャ、および変更できます。変更要求、応答、ヘッダー、...さらに、さまざまな要求をインターセプトできます。

例えばresponse_delay.py

from mitmproxy import http
from time import sleep

def response(flow: http.HTTPFlow) -> None:
    sleep(5.0)

次に、このコメントを実行すると、サーバーからのすべての応答が遅延します。

mitmproxy --cert \*.asdf.at=./cert.pem --scripts response_delay.py

私のアプリでは証明書のピン留めを使用しているため、証明書を追加する必要があります(プライベート+パブリック)

cat private.key public.key> cert.pem

簡単なチュートリアル こちら を見つけることができます。

他のスクリプトの例を見つけることができます こちら

Netlimiter4は、エミュレーターにデータを調整するための最適なソリューションであることがわかりました。適切なGUIを使用してきめ細かな制御を行い、各プロセスへのデータスループットに関するグラフィカルなフィードバックを提供します。現在、無料のベータ版です。 スクリーンショット

http://www.netlimiter.com/products/nl4

Playストアには、実際のデバイスを調整するためのアプリがありますが、ルートが必要です(YMMVの場合でも、どの程度うまく機能するかについてアドバイスはできません)。

playストアでbradyboundを検索すると、複数のリンクを投稿できません。

1
Michael.

Android studioからAndroidデバイスモニターに移動してから、DDMS-> Emulator Controlに移動します。SpeedおよびLatencyプロパティがあります。

1
Lester
  1. Android Studioでターミナルを開き、../../Android/sdk/toolsに移動します。 「エミュレータ」実行可能ファイルはここから入手できます。

  2. ./emulator -netdelay "delay_in_millis" -avd "emulator_device_name"を実行します

    例:./emulator -netdelay 60000 -avd Nexus_5_API_21

  3. 次に、アプリをビルドしてエミュレーターにインストールします。

  4. アプリでシナリオを実行します。

タイムアウトをリクエストに設定して処理するアプリでコードを変更してください。

1
cgr

これを試しましたか?設定-ネットワーク-その他-モバイルネットワーク-ネットワークモード-優先ネットワーク(たとえば、2G)を選択します。

私が使用した別の方法は上記で言及されました。 iPhoneのホットスポット経由で接続します。お役に立てれば。

1
Charlie Brown

@VicVu Charles(または他のプロキシツール)が示唆するように、より簡単な方法です。しかし、genymotionやその他のエミュレータだけでなく、デバイスでもこれを実行できることを付け加えたいと思います。プロセスは同じです:

手動プロキシを使用するには、デバイス/エミュレーターのwifi設定を変更します。そして、プロキシのホスト名とポートを設定しますホスト名をシステムのIPとして設定します(ifconfig/ifconfigを使用してpc/macのIPを取得します)b。 genymotionのポート番号を設定します(charlesのプロキシ設定を確認します)

PS:使用しているIPはプライベートIPである可能性が高いため、デバイス/エミュレーターは同じwifiを使用する必要があります。

1
Ankit

非常に古い投稿ですが、2セントを追加します。このハードウェア製品( https://apposite-tech.com/products/linktropy-mini/ )に非常に満足しているため、多くの現実世界の状況をシミュレートできました。長い間、エミュレーターまたは機内モードで機能するさまざまなもののトラブルシューティングに課題がありました。

ゼロの接続性から、さまざまな段階の遅延、パケット損失、ビットエラーを伴うさまざまな段階の接続性まで、いくつかの異なるプロファイルが設定されています。すばらしいことは、エミュレータでアプリを再起動することなく、これらをオンザフライで変更できることです。当店にとって価格はそれだけの価値があり、使用するのは非常に簡単です。

0