回答:
これにはエミュレータを使用できます。このページをご覧ください:Android Emulator。次の2つの引数に注意してください。
-netdelay <delay>
ネットワーク遅延エミュレーションをに設定します。デフォルト値はありません。サポートされる値については、ネットワーク遅延エミュレーションの表を参照してください。
-netspeed <speed>
ネットワーク速度エミュレーションをに設定します。デフォルト値はフルです。サポートされている値については、ネットワーク速度エミュレーションの表を参照してください。
増加するkbpsでの参照速度:
UP DOWN
-------- ----------
gsm GSM/CSD 14.4 14.4
hscsd HSCSD 14.4 57.6
gprs GPRS 28.8 57.6
umts UMTS/3G 384.0 384.0
edge EDGE/EGPRS 473.6 473.6
hsdpa HSDPA 5760.0 13,980.0
lte LTE 58,000.0 173,000.0
evdo EVDO 75,000.0 280,000.0
full No limit ∞ ∞
tc
(busyboxから)コマンドを使用する必要があります。
これは少しおかしく聞こえるかもしれませんが、電子レンジは電子レンジのシールドとして機能します。したがって、デバイスを電子レンジ内に置くと(デバイスが入っているときに電子レンジの電源を入れないでください!)、信号強度が大幅に低下します。エレベーターの中に立っているのは間違いなく...
以来のiPhoneの開発者向けオプションがWiFiテザリングに適用され、あなたが持っているiPhone得ることができますiOS 6
し、上記の(とするように設定されているuse for developments
としxcode
)、目的のネットワークプロファイルをエミュレートするように設定し、あなたの接続のAndroidのホットスポットにデバイスを
Android Studio v 1.5以降の更新
下記のコメントで@LouMordaが言及したEmulator
ように、元の投稿で言及されていたタブはAndroid Studio v 1.5で削除されました。
これで、これらの設定はのシミュレータ設定に配置されましたAVD Manager
。
これらの設定にアクセスするには:
Tools -> Android -> AVD Manager
Edit AVD
ボタン(鉛筆アイコン)をクリックしますNetwork Settings
クリックした後にアクセスすることができShow Advanced Settings
、ボタンを 元の投稿
Android Studio IDEを使用しているユーザー向け:
Run -> Edit Configurations
Android Application -> [Your App]
Emulator
タブを選択Network Speed
し、Network Latency
異なる速度や待ち時間などをシミュレートします または、Additional command line options
@ inazarukの回答に記載されているように、テキストフィールドにさまざまな引数を入力できます。
以下のスクリーンショットは、このRun Configuration
画面がどのように表示されるかを示しています。
私はこの質問に答えるのが少し遅いことを知っていますが、これが同様の問題に直面している他の人に役立つことを願っています!
編集
日食を使用している人は、以下の@Abhiの回答を参照してください。
私はそれが古い質問であることを知っていますが...
現在、一部の電話には2Gのみを使用する設定があります。実際のデバイスで遅いインターネットをシミュレートするのに最適です。
歳ですがねえ、私はGenymotionを使ったフールプルーフな方法を取り入れます。
Charlesの無料トライアルをダウンロード:http : //www.charlesproxy.com/download/
インストールする
クリックProxy -> Throttle Settings
HTTPスロットル速度を設定する
そのウィンドウを閉じます
クリックProxy -> Throttling
してスロットルを有効にします
Genymotionエミュレーターを開く
Wi-Fi設定を開きます
有効なWi-Fi接続を長押しします
クリック Modify Network
クリック Show Advanced Options
設定するProxy
にはManual
設定するProxy hostname
には10.0.3.2
設定するPort
には8888
クリック Save
そして今、あなたのネットワークは抑制されます!
見落とされているように見える実際のデバイスで低速をテストする簡単な方法があります。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 -接続/
FacebookはAugmented Traffic Controlと呼ばれるものを作りました。GitHubページの簡単な要約:
Augmented Traffic Control(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/
誰もこれに言及しなかったのには驚きです。Bluetooth経由でテザリングし、10メートル以上(障害物がある場合はそれ以下)離すことができます。あなたは本当に悪い接続を持っています。電子レンジ、エレベーター、ソフトウェアは必要ありません。
Mac OSユーザーの場合、AppleからダウンロードできるNetwork Link Conditionerを使用できます。MacでAPとして設定すると、あらゆるデバイスが接続できます。
facebookのオープンソースツールATC http://facebook.github.io/augmented-traffic-control/を使用することもできます。
私はこの問題に半日も苦労していたが、ようやくこの解決策にたどり着いた。
実際のデバイスでテストすることは、それを機能させるために多くのことを経験する必要があるため、全体的にあまり意味がありません。実際のテストを実現する唯一の論理的な方法は、電話会社がEDGEなどの低品質の携帯電話ネットワークに接続することです。*#*#4636#*#*
電話アプリでダイヤルすることでこれを試すことができます
元のAndroidエミュレーターはテストには遅すぎて、上記のソリューション以上のものを実現できません。
これを行う最良の方法は、Genymotionを使用することです。これは、元のAVDよりもはるかに優れたパフォーマンスを持つAndroidエミュレーターであり、個人用のバージョンは無料です。
Genymotionで仮想デバイスを作成したら、このチュートリアルを実行して、デバイスのプロキシを設定します。
CrapifyやToxiproxy(前者のみをテストしました)などの悪いネットワーク状態をシミュレートするホストマシンでプロキシサーバーを実行し、問題ありません。
更新:
実際のデバイスでも同じ戦略を選択できることに気づきました。すぐに気付かないバカみたいだ。お使いのコンピューターでCrapifyプロキシを開始し、電話プロキシをコンピューターのローカルアドレスに設定するだけで、お使いの電話でインターネットが不安定になります。
@VicVu Charles(またはその他のプロキシツール)が提案するように、より簡単な方法です。ただし、genymotionや他のエミュレーターだけでなく、デバイスでもこれを実行できることを付け加えておきます。プロセスは同じです:
デバイス/エミュレータのwifi設定を変更して、手動プロキシを使用します。次に、プロキシのホスト名とポートを設定します。ホスト名をシステムのIPとして設定します(ifconfig / ifconfigを使用してPC / MacのIPを取得します)。genymotionのポート番号を設定します(charlesのプロキシ設定を確認してください)
PS:使用しているIPはおそらくプライベートIPであるため、デバイス/エミュレータは同じwifiを使用している必要があります。
Android Studioでターミナルを開き、.. / .. / Android / sdk / toolsに移動します。「エミュレータ」実行可能ファイルは、ここから入手できます。
./emulator -netdelay "delay_in_millis" -avd "emulator_device_name"を実行します
例:./emulator -netdelay 60000 -avd Nexus_5_API_21
アプリをビルドしてエミュレータにインストールします。
リクエストにタイムアウトを設定してそれを処理するアプリのコード変更があることを確認してください。
netlimiter4は、データをエミュレーターにスロットリングするための最良のソリューションであることがわかりました。それはまともなGUIを介してきめ細かい制御を提供し、各プロセスへのデータスループットに関するグラフィカルなフィードバックを提供します。現在無料ベータ版です。 スクリーンショット
http://www.netlimiter.com/products/nl4
実際のデバイスにスロットルするためにPlayストアで利用できるアプリがありますが、それらにはルートが必要です(どのように機能するかについてのアドバイスは提供できません-とにかくYMMVです)。
プレイストアでbradyboundを検索してください。複数のリンクを投稿することはできません。
これを試しましたか?設定-ネットワーク-その他-モバイルネットワーク-ネットワークモード-優先ネットワークを選択します(2Gなど)。
私が使用した別の方法は上記で言及されました。iPhoneホットスポットを介して接続します。お役に立てれば。
mitmproxy HTTPSプロキシを使用しています。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
私のアプリでは証明書のピン留めを使用しているため、証明書を追加する必要があります(プライベート+パブリック)
猫private.key public.key> cert.pem
他のスクリプト例はここにあります。
非常に古い投稿ですが、2セント追加します。私はこのハードウェア製品に非常に満足しています(https://apposite-tech.com/products/linktropy-mini/)に非常に、実際の多くの状況をシミュレートすることができました。長い間、エミュレータや機内モードで機能するさまざまな問題のトラブルシューティングに苦労していました。
ゼロ接続から限界接続のさまざまな段階まで、レイテンシ、パケット損失、およびビットエラーの程度が異なるいくつかの異なるプロファイルセットアップがあります。それの素晴らしいところは、エミュレータでアプリを再起動する必要なく、オンザフライでこれらを変更できることです。価格は私たちの店にとってそれだけの価値があり、それを使用するのは非常に簡単です。