ネットワーク接続が低い場合にアプリケーションをテストしたいと思います。エレベーターに立つことを除いて、これを行う最善の方法は何ですか?携帯電話をアルミホイルで包んでみましたが、あまり役に立ちませんでした。
エミュレータではなく、実際のデバイスでテストする必要があります。
これにはエミュレータを使用できます。このページをご覧ください: Android Emulator 。次の2つの引数に注意してください。
-netdelay <delay>
ネットワーク遅延エミュレーションをに設定します。デフォルト値はなしです。サポートされる値については、ネットワーク遅延エミュレーションの表を参照してください。
-netspeed <speed>
ネットワーク速度エミュレーションをに設定します。デフォルト値はいっぱいです。サポートされる値については、ネットワーク速度エミュレーションの表を参照してください。
これは少し奇妙に聞こえるかもしれませんが、電子レンジは電子レンジのシールドとして機能します。したがって、デバイスを電子レンジ内に置くと(デバイスが内部にある間は電子レンジの電源を入れないでください!)、信号強度が大幅に低下します。それは間違いなくエレベーターの中に立っていることを打ち負かします...
iPhones開発者オプションはWi-Fiテザリングに適用されるため、iOS 6
以上(およびxcode
でuse for developments
に設定されている)のiPhoneを取得し、目的のネットワークプロファイルをエミュレートするように設定して、接続します- Androidホットスポットへのデバイス
Android Studio v 1.5以降のアップデート
下のコメントで@LouMordaが言及したように、元の投稿で言及されたEmulator
name__タブは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
name__タブを選択しますNetwork Speed
とNetwork Latency
の異なる値を変更して、異なる速度やレイテンシなどをシミュレートできますまたは、@ inazarukの回答に記載されているように、Additional command line options
テキストフィールドにさまざまな引数を入力できます。
以下のスクリーンショットは、このRun Configuration
画面がどのように見えるかを説明しています。
私はこの質問に答えるのが少し遅れていることを知っていますが、これが同様の問題に直面している他の人を助けることを願っています!
編集
Eclipseを使用している場合は、以下の @ Abhiの回答 を参照してください。
私はそれが古い質問であることを知っていますが...
一部の携帯電話は現在、2Gのみを利用する設定になっています。実際のデバイスで遅いインターネットをシミュレートするのに最適です。
何歳か、ちょっと、Genymotionで私の絶対確実な方法でチャイムします。
Charlesの無料トライアルをダウンロードします。 http://www.charlesproxy.com/download/
インストールする
ClickProxy -> 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
をクリックします
そして今、あなたのネットワークは絞られます!
エミュレータで接続が低い/悪い状態でアプリケーションをテストする簡単な方法:
移動実行> 実行構成、Androidアプリケーションを選択し、そこでターゲットタブに移動します。 エミュレーター起動パラメーターを見てください。ここでは、ネットワーク速度とネットワーク遅延を簡単に変更できます。
見落とされているように見える実際のデバイスで低速をテストする簡単な方法があります。 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 /
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/
また、実際のAndroidデバイスで低速のインターネット接続をテストすることもできます。
Samsung Galaxy S8 + Android 8.0.0でテスト済み
設定-> 接続-> モバイルネットワーク->に移動し、networkmodeで、使用のみを選択できます- 2GまたはG接続
誰もこれに言及していないことに驚いています。 Bluetooth経由でテザリングし、10メートル以上(障害物がある場合はそれ以下)離すことができます。 real接続が不良です。電子レンジ、エレベーター、ソフトウェアは必要ありません。
または、実際のデバイスでは、[設定]-> [モバイルネットワーク]-> [優先するネットワークタイプ]を選択し、利用可能な最も遅いネットワークを選択できます。
ネットワーク接続がないか、または低速なネットワーク接続のみをテストしますか?前者の場合は、Settings > Wireless & networks > Airplane mode
に移動して、機内モードをオンにすることができます。これにより、実際のデバイスでネットワークの可用性をテストできます。
mac OSユーザーの場合、AppleからダウンロードできるNetwork Link Conditionerを使用できます。 MacのAPとして設定すると、あらゆるデバイスが接続できます。
facebookオープンソースツールATCを使用できます http://facebook.github.io/augmented-traffic-control/
私はこの問題に半日苦労していましたが、ついにこの解決策にたどり着きました。
実際のデバイスでテストすることは、動作させるために多くの作業を行う必要があるため、全体としてあまり意味がありません。実際のテストを達成する唯一の論理的な方法は、電話会社がEdgeのような低品質の携帯電話ネットワークに接続することです。電話アプリで*#*#4636#*#*
をダイヤルして、これを行うことができます。
元のAndroidエミュレーターはテストするには遅すぎるため、上記のソリューション以上のものを達成できません。
これを行う最良の方法は、 Genymotion を使用することです。これはAndroidエミュレーターで、元のAVDよりもはるかに優れたパフォーマンスを備えており、個人使用のバージョンは無料です。
Genymotionで仮想デバイスを作成したら、 このチュートリアル を実行して、デバイスのプロキシを設定します。
Crapify または Toxiproxy (前者のみをテストした)のような悪いネットワーク条件をシミュレートするホストマシンでプロキシサーバーを実行します。
更新:
実際のデバイスでも同じ戦略を選択できることに気付きました。私はそれをすぐに実現しないためのばかのように感じます。コンピュータでCrapifyプロキシを起動し、電話プロキシをコンピュータのローカルアドレスに設定するだけで、お使いの携帯電話で不正なインターネットが発生します。
Android studio AVDの更新:
電子レンジやエレベーターはありません:)
[実行]> [実行構成]を選択し、Androidアプリケーションを選択して、[ターゲット]タブに移動します。図に示すように変更を行います。
私は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を検索すると、複数のリンクを投稿できません。
Android studioからAndroidデバイスモニターに移動してから、DDMS-> Emulator Controlに移動します。SpeedおよびLatencyプロパティがあります。
Android Studioでターミナルを開き、../../Android/sdk/toolsに移動します。 「エミュレータ」実行可能ファイルはここから入手できます。
./emulator -netdelay "delay_in_millis" -avd "emulator_device_name"を実行します
例:./emulator -netdelay 60000 -avd Nexus_5_API_21
次に、アプリをビルドしてエミュレーターにインストールします。
タイムアウトをリクエストに設定して処理するアプリでコードを変更してください。
これを試しましたか?設定-ネットワーク-その他-モバイルネットワーク-ネットワークモード-優先ネットワーク(たとえば、2G)を選択します。
私が使用した別の方法は上記で言及されました。 iPhoneのホットスポット経由で接続します。お役に立てれば。
@VicVu Charles(または他のプロキシツール)が示唆するように、より簡単な方法です。しかし、genymotionやその他のエミュレータだけでなく、デバイスでもこれを実行できることを付け加えたいと思います。プロセスは同じです:
手動プロキシを使用するには、デバイス/エミュレーターのwifi設定を変更します。そして、プロキシのホスト名とポートを設定しますホスト名をシステムのIPとして設定します(ifconfig/ifconfigを使用してpc/macのIPを取得します)b。 genymotionのポート番号を設定します(charlesのプロキシ設定を確認します)
PS:使用しているIPはプライベートIPである可能性が高いため、デバイス/エミュレーターは同じwifiを使用する必要があります。
非常に古い投稿ですが、2セントを追加します。このハードウェア製品( https://apposite-tech.com/products/linktropy-mini/ )に非常に満足しているため、多くの現実世界の状況をシミュレートできました。長い間、エミュレーターまたは機内モードで機能するさまざまなもののトラブルシューティングに課題がありました。
ゼロの接続性から、さまざまな段階の遅延、パケット損失、ビットエラーを伴うさまざまな段階の接続性まで、いくつかの異なるプロファイルが設定されています。すばらしいことは、エミュレータでアプリを再起動することなく、これらをオンザフライで変更できることです。当店にとって価格はそれだけの価値があり、使用するのは非常に簡単です。