Android 용 낮은 네트워크 연결 시뮬레이션 [폐쇄]


228

네트워크 연결이 낮은 경우에 대한 응용 프로그램을 테스트하고 싶습니다. 엘리베이터에 서있는 것을 제외하고 가장 좋은 방법은 무엇입니까? 휴대 전화를 알루미늄 호일로 감싸려고했지만 별 도움이되지 않았습니다.

에뮬레이터가 아닌 실제 장치에서 테스트해야합니다.


1
패러데이 케이지 연구 . 그들은 쉽게 구축 할 수 있습니다.
jww

답변:


119

에뮬레이터를 사용할 수 있습니다. 이 페이지를 살펴보세요 안드로이드 에뮬레이터 . 다음 두 가지 주장에주의하십시오.

  1. -netdelay <delay>

    네트워크 대기 시간 에뮬레이션을로 설정하십시오. 기본값은 none입니다. 지원되는 값은 네트워크 지연 에뮬레이션의 표를 참조하십시오.

  2. -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                     
    

15
고마워요,하지만 말했듯이 실제 장치에서 테스트하고 싶습니다. HTC 또는 삼성 전화 에서이 작업을 수행 할 수있는 방법은 무엇입니까?
Maggie

2
내 생각에 유일한 방법은 네트워크 속도를 제어 할 수있는 Wi-Fi 라우터 / AP를 사용하는 것입니다. 이것은 더 많은 네트워크 관리자입니다. 그러나 이것은 이론적으로 가능해야합니다.
inazaruk

78
나는 엘리베이터를 사용했습니다 :) 그러나 모두에게 감사합니다
Maggie

3
HTTP를 통한 대기 시간을 시뮬레이션하려면 ResponseCache.setDefault (new CacheResponse () {...})를 사용하고 Thread.sleep (200) 호출을 넣습니다. 이것은 프로그래밍 방식으로 제어되고 (즉, 한 활동에서만) 다른 프로세스에 영향을 미치지 않는 이점이 있습니다. 그러나보다 현실적인 테스트를 위해서는 라우터에서 또는 tcbusybox 명령을 사용하여 제한을 설정해야합니다 .
21

112
이것이 왜 대답으로 받아 들여졌습니까? 이 질문은 "에뮬레이터에 있지 않다"고 분명히 밝혔습니다
Kyle Ivey

272

약간 미친 소리가 나지만 전자 레인지는 전자 레인지 차폐 역할을합니다. 따라서 장치를 전자 레인지 안에 넣으면 (장치 내부에 전자 레인지를 켜지 마십시오!) 신호 강도가 크게 떨어집니다. 엘리베이터 안에 서있는 것이 확실합니다 ...


3
와우, 지금 당신이 나에게도 오븐에 들어갈 수있는 방법을 제안 할 수 있다면. 오븐은 2.4GHz를 차폐하도록 설계되었습니다. 더 낮은 주파수에서는 작동하지 않을 수 있습니다. IDK!
WindRider

2
전자 레인지에서 작동하지 않았습니다 (예 : 연결이 여전히 괜찮습니다)! 아 : |
yura

1
USB 코드가 연결되어 있으면 신호가 이런 식으로 잠길 수 있습니다. 코드가 전혀 부착되지 않은 상태에서 전자 레인지 안에 있으면 신호를받지 않아야합니다. 실수로 전화를 끌 수 없기 때문에 전화가 녹지 않는 알루미늄 호일로도이 효과를 얻을 수 있어야합니다.
존 무어

전자 레인지는 즉시 연결을 끊어야하고 추가 사용자 상호 작용이 필요하지 않은 경우에도 여전히 좋은 옵션입니다.
Robert Yang

108

이후 아이폰의 개발자 옵션은 와이파이 테 더링에 적용, 당신이 가지고있는 아이폰 얻을 수 iOS 6이상 (과에 설정을하고있다 use for developments로를 xcode) 원하는 네트워크 프로파일을 에뮬레이션하여 연결을 설정 안드로이드 의 핫스팟 장치를

여기에 이미지 설명을 입력하십시오


10
이것이 우리가 도착한 솔루션이었습니다. 이것이 가장 현명한 옵션이라는 것은 부끄러운 일입니다. 답변에서 테 더링이 작동하려면 iPhone에 3G / 셀룰러 연결이 필요하다는 점에 유의해야합니다. 또한 테 더링 된 장치와 관련하여 iPhone 유틸리티에 필요한 업로드 / 다운로드 속도를 반전시켜야합니다.
Kyle Ivey

훌륭한! 어쨌든 이것이 에뮬레이터가 할 수 있기 때문에 이것이 최선의 선택이라고 생각하십시오.
karl

iPhone 에뮬레이터가 WiFi를 테 더링 할 수 있습니까?
Kirill Kulakov

감사. 설정 방법이 혼란 스러웠습니다. 개인 핫스팟을 허용하는 셀룰러 요금제를 사용하는 경우 방법입니다. iOS 7.12를 사용하고 있습니다 1) 설정-> 셀-> 개인 핫스팟으로 이동 2) 개인 핫스팟 스위치를 오른쪽으로 밀어서 녹색 / 켜짐으로 설정하십시오 (원하는 경우 암호를 변경할 수 있음) 3) 돌아가서 뒤로 돌아가서 개발자로 스크롤하십시오. 4) 네트워크 링크 컨디셔너로 아래로 스크롤하여 누릅니다. ENABLE을 오른쪽으로 밀면 녹색이되고 프로파일이 선택됩니다. "Very Bad Network"를 선택했습니다. 이것은 나에게 핑 (2198ms) 다운로드 (0.05Mbps) 업로드 (0.08Mbps)를 주었다 5) 안드로이드를 핫스팟에 연결하십시오!
Anthony De Souza

1
나는 웃음을 멈출 수는 없지만 이것이 실제 장치에서 느린 네트워크를 시뮬레이션하는 가장 좋은 솔루션입니다. 감사합니다
KD.

71

Android Studio v 1.5 이상 업데이트
@LouMorda가 아래 설명에서 Emulator언급했듯이 원래 게시물에 언급 된 탭이 Android Studio v 1.5에서 제거되었다고합니다.

이제이 설정을의 시뮬레이터 설정에 배치했습니다 AVD Manager.
이 설정에 액세스하려면

  1. 고르다 Tools -> Android -> AVD Manager
  2. Edit AVD버튼 (연필 아이콘)을 클릭하십시오
  3. Network Settings클릭 한 후 액세스 할 수있는 Show Advanced Settings버튼을

다음은 어떻게 나타나는지에 대한 스크린 샷입니다.
Android Studio v 1.5의 네트워크 속도 및 대기 시간 설정

원래 게시물
Android Studio IDE를 사용하는 사람 :

  1. 이동 Run -> Edit Configurations
  2. 고르다 Android Application -> [Your App]
  3. 선택 Emulator
  4. 여기에 다른 값을 변경할 수 있습니다 Network SpeedNetwork Latency다른 속도 및 지연 시간 등을 시뮬레이션 할 수

또는 Additional command line options@inazaruk의 답변에 언급 된대로 텍스트 필드에 다양한 인수를 입력 할 수 있습니다 .

아래 스크린 샷은이 Run Configuration화면의 모양을 설명합니다 .

Android Studio 베타 0.8.6에서 구성 화면 실행

나는이 질문에 대답하기에 약간 늦었지만 비슷한 문제에 직면 한 다른 사람들을 돕기를 바랍니다!

편집
이클립스를 사용하는 사람은 아래 @Abhi의 답변을 참조하십시오.


1
이 탭은 안드로이드 스튜디오 V1.5에서 제거되었습니다
루 Morda을

@ S1LENT WARRIOR 대기 시간이란 무엇이며 "속도 : 가장자리, 대기 시간 : 없음"과 "속도 : 전체, 대기 시간 : 가장자리"의 차이점은 무엇입니까?
Johnny Five

1
@JohnnyFive 속도는 네트워크 속도를 나타내며 대기 시간은 네트워크 지연을 의미합니다.
S1LENT WARRIOR

45

나는 그것이 오래된 질문이라는 것을 알고 있지만 ...

오늘날 일부 전화는 2G 만 사용하도록 설정되어 있습니다. 실제 장치에서 느린 인터넷을 시뮬레이션하는 데 적합합니다.

여기에 이미지 설명을 입력하십시오


완벽 해! 9kbyte / s로 업로드.
JcV

대단한, 이것은 나의 현재 요구에 완벽하게 맞습니다. 내 방에서는 2G에서 200KB 업로드가 거의 항상 실패합니다.
Deleplace

3
이 사람은 진짜 MVP입니다.
edwoollard

33

몇 년이나 지났지 만, 나는 Genymotion으로 내 바보 같은 방법으로 차임 할 것입니다.

  • Charles 무료 평가판 다운로드 : http://www.charlesproxy.com/download/

  • 설치

  • 딸깍 하는 소리Proxy -> Throttle Settings

  • HTTP 스로틀 속도 설정

  • 그 창을 닫아

  • Proxy -> Throttling스로틀을 활성화 하려면 클릭

  • Genymotion 에뮬레이터를 엽니 다

  • Wi-Fi 설정을 엽니 다

  • 활성화 된 Wi-Fi 연결을 길게 누릅니다.

  • 딸깍 하는 소리 Modify Network

  • 딸깍 하는 소리 Show Advanced Options

  • 설정 ProxyManual

  • 설정 Proxy hostname10.0.3.2

  • 설정 Port8888

  • 딸깍 하는 소리 Save

이제 네트워크가 조절됩니다!


10.0.3.2 호스트 이름은 어디서 얻었습니까? 그 charle의 기본값입니까?
abbood

호스트 이름은 Charles 로컬 네트워크 주소를 실행하는 컴퓨터 여야합니다
MaTriXy

16

당신은 또한 실제 안드로이드 장치에서 느린 인터넷 연결을 테스트 할 수 있습니다 :

Samsung Galaxy S8 + Android 8.0.0으로 테스트

이동 설정 -> 연결 -> 모바일 네트워크 ->과에서 네트워크 모드 만 사용하도록 선택할 수 있습니다 2G 또는 3G 연결을


15

문제를 해결하기위한 전략이 하나 있습니다. 프록시 응용 프로그램을 사용하여 인터넷 상태를 수정하거나 모니터링 할 수 있습니다. 예를 들어, 찰스 .

내가 게시 한 다음 그림과 같이 Charles의 기본 구성을 변경해야합니다.

스로틀 설정 열기

스로틀 설정하기

마지막으로 순 상태가 더 낮은 속도로 형성되었음을 알 수 있습니다.

전에

이후 설정


2
이것은 지금까지 유일한 적절한 해결책입니다. D
egorikem

8

에뮬레이터에서 연결이 낮거나 나쁜 상태에서 응용 프로그램을 테스트하는 쉬운 방법 :

실행 > 구성 실행으로 이동 하여 Android 애플리케이션을 선택한 후 대상 탭으로 이동 하십시오. 봐 에뮬레이터 출시 매개 변수를 . 여기에서 네트워크 속도 및 네트워크 대기 시간을 쉽게 수정할 수 있습니다.


8

간과 된 것처럼 보이는 실제 장치에서 저속을 테스트하는 간단한 방법이 있습니다. Mac 및 이더넷 (또는 기타 유선) 네트워크 연결이 필요합니다.

Mac에서 Wi-Fi 공유를 켜고 컴퓨터를 Wi-Fi 핫스팟으로 바꾸고 장치를 여기에 연결하십시오. Netlimiter / Charles Proxy 또는 Network Link Conditioner (이미 설치했을 수 있음)를 사용하여 속도를 제어하십시오.

자세한 내용을 확인하고 어떤 종류의 속도를 테스트해야하는지 이해하려면 http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor -사이/


"공유"기본 설정 창을 사용하면 대부분의 연결을 대부분의 다른 연결과 공유 할 수 있습니다. Bluetooth를 통해 WiFi 연결을 공유하도록 설정했습니다. (블루투스 옵션을 통한 연결은 이것이 설정 될 때까지 안드로이드 폰에 나타나지 않았습니다.)
Doug Reeder

네트워크 링크 컨디셔너 도구를 설치하려면 : stackoverflow.com/q/9659382
Pang

7

Android Studio에서 에뮬레이터를 실행하는 동안 :

1- 에뮬레이터 사이드 바 하단의 적중 설정 버튼

2- 셀룰러로 이동

3 네트워크 유형 설정

스크린 샷


6

Facebook은 Augmented Traffic Control 이라는 것을 구축했습니다 . GitHub 페이지에서 간단한 요약 :

ATC (Augmented Traffic Control)는 네트워크 상태를 시뮬레이션하는 도구입니다. 장치의 인터넷 연결을 제어 할 수 있습니다. 개발자는 ATC를 사용하여 다양한 네트워크 조건에서 애플리케이션을 테스트하여 고속, 모바일 및 심하게 손상된 네트워크를 쉽게 에뮬레이션 할 수 있습니다. 제어 할 수있는 연결 측면은 다음과 같습니다.

  • 대역폭
  • 지연 시간
  • 패킷 손실
  • 손상된 패킷
  • 패킷 주문

네트워크 트래픽을 형성하려면 ATC가 트래픽을 라우팅하고 네트워크 게이트웨이와 같은 장치의 실제 IP 주소를 보는 장치에서 실행되고 있어야합니다. 또한 ATC를 통해 라우팅되는 모든 장치가 트래픽을 조정할 수 있습니다. 웹 브라우저를 사용하는 모든 장치에서 클라이언트 응용 프로그램없이 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

아무도 이것을 언급하지 않은 것에 놀랐습니다. 블루투스를 통해 테 더링하여 10 미터 이상 (장애물이있는 경우)으로 분리 할 수 ​​있습니다. 당신은 정말 나쁜 연결이 있습니다. 전자 레인지, 엘리베이터, 소프트웨어 불필요


블루투스 연결 상태가 좋지 않으면 실제로 좋은 솔루션입니다. 이를 위해 오래된 장치를 사용해야합니다. :)
Android 개발자

5

또는 실제 장치에서는 설정-> 모바일 네트워크-> 기본 네트워크 유형으로 이동하여 사용 가능한 가장 느린 유형을 선택할 수 있습니다. 물론 이것은 매우 제한적이지만 일부 테스트 목적으로는 충분할 수 있습니다.


3

Android 스튜디오 AVD에서 업데이트 :

  1. AVD 관리자 열기
  2. AVD 생성 / 편집
  3. 고급 설정을 클릭하십시오
  4. 원하는 연결 설정을 선택하십시오

전자 레인지 또는 엘리베이터 없음 :)



2

네트워크 연결이 없거나 느린 네트워크 연결을 테스트 하시겠습니까? 전자의 경우 Settings > Wireless & networks > Airplane mode비행기 모드 로 이동하여 켤 수 있습니다 . 그러면 실제 장치에서 네트워크 사용 불가능 성을 테스트 할 수 있습니다.


고맙지 만 네트워크 연결이 낮은 지 테스트하려고했습니다. 예 : 낮은 EDGE 신호 또는 이와 유사한 것.
매기

아 너무 나쁘면 3G를 끄고 EDGE 로밍으로 돌아갈 수 없습니다. 적어도 내 전화로는 할 수 없습니다.
David Conrad

2

실행> 구성 실행으로 이동하여 Android 애플리케이션을 선택한 후 대상 탭으로 이동하십시오. 그림과 같이 변경하십시오.

여기에 이미지 설명을 입력하십시오


2

나는 반나절 동안이 문제로 어려움을 겪고 있었고 마침내이 솔루션에 왔습니다.

  • 실제 장치에서 테스트하는 것은 작동하기 위해 많은 과정을 거쳐야하므로 전체적으로 의미가 없습니다. 실제 테스트를 수행하는 유일한 논리적 방법은 전화 회사에서 제공하는 경우 전화기를 EDGE와 같은 저품질 셀룰러 네트워크에 연결하는 것입니다. *#*#4636#*#*전화 앱에서 전화 를 걸어이 작업을 시도 할 수 있습니다

  • 원래 Android 에뮬레이터는 테스트하기에는 너무 느리고 위의 솔루션보다 더 많은 것을 달성하지 못합니다.

이를 수행하는 가장 좋은 방법은 Genymotion을 사용하는 입니다. 원래 AVD보다 훨씬 우수한 성능을 가진 Android 에뮬레이터이며 개인용 버전은 무료입니다.

Genymotion 에뮬레이터

Genymotion에서 가상 장치를 만든 후이 자습서 를 통해 장치의 프록시를 설정하십시오.

호스트 컴퓨터에서 Crapify 또는 Toxiproxy 와 같은 잘못된 네트워크 조건을 시뮬레이트하는 프록시 서버를 실행하십시오 .

최신 정보:

실제 장치에서도 동일한 전략을 선택할 수 있다는 것을 깨달았습니다. 나는 그것을 더 빨리 깨닫지 못한 바보 같은 느낌이 든다. 컴퓨터에서 Crapify 프록시를 시작하고 전화 프록시를 컴퓨터의 로컬 주소 및 voila로 설정하면 전화에 인터넷이 엉망입니다.


1

@VicVu Charles (또는 다른 프록시 도구)가 제안한 것처럼 쉽게 갈 수 있습니다. 그러나 나는 genymotion이나 다른 에뮬레이터뿐만 아니라 장치로도 이것을 할 수 있다고 덧붙이고 싶습니다. 과정은 동일합니다 :

수동 프록시를 사용하도록 장치 / 에뮬레이터의 wifi 설정을 수정하십시오. 그런 다음 프록시 호스트 이름 및 포트를 설정하십시오. 호스트 이름을 시스템의 ip로 설정하십시오 (ifconfig / ifconfig를 사용하여 pc / mac의 IP를 얻으십시오) b. genymotion의 포트 번호를 설정하십시오 (charles에서 프록시 설정 확인).

추신 : 사용중인 IP는 아마도 개인 IP 일 것이므로 장치 / 에뮬레이터는 반드시 동일한 Wi-Fi를 사용해야합니다.


1
  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

Android 스튜디오에서 Android 장치 모니터로 이동 한 다음 DDMS-> 에뮬레이터 제어로 이동하면 속도 및 대기 시간 속성이 있습니다.


1

netlimiter4가 데이터를 에뮬레이터로 제한하는 데 가장 적합한 솔루션이라는 것을 알았습니다. 적절한 GUI를 통해 세밀한 제어가 가능하며 각 프로세스의 데이터 처리량에 대한 그래픽 피드백을 제공합니다. 현재 무료 베타 버전입니다. 스크린 샷

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

Play 스토어에는 실제 기기를 조절할 수있는 앱이 있지만 루트가 필요합니다. (YMMV의 경우 얼마나 잘 작동하는지 조언을 드릴 수 없습니다.)

Play 스토어에서 bradybound를 검색하면 둘 이상의 링크를 게시 할 수 없습니다 ..


1

이것을 시도 했습니까? 설정-네트워크-추가-모바일 네트워크-네트워크 모드-기본 네트워크를 선택하십시오 (예 : 2G).

내가 사용한 다른 방법은 위에서 언급했습니다. iPhone 핫스팟을 통해 연결하십시오. 도움이 되었기를 바랍니다.


1

내가 사용하고 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

내 응용 프로그램에서 인증서 고정을 사용하고 있으므로 인증서를 추가해야합니다 (개인 + 공개)

cat private.key public.key> cert.pem

간단한 자습서를 여기에서 찾을 수 있습니다 .

다른 스크립팅 예제는 여기에서 찾을 수 있습니다 .


0

아주 오래된 게시물이지만 2 센트를 추가하겠습니다. 이 하드웨어 제품 ( https://apposite-tech.com/products/linktropy-mini/ ) 에 매우 만족 하여 많은 실제 조건을 시뮬레이션 할 수있었습니다. 오랫동안 에뮬레이터 또는 비행기 모드에서 작동하는 다양한 문제를 해결하는 데 어려움이있었습니다.

지연 시간, 패킷 손실 및 비트 오류가 다른 제로 커넥티비티부터 다양한 마진 커넥티비티 단계까지 다양한 프로파일 설정이 있습니다. 그것에 대한 좋은 점은 에뮬레이터에서 앱을 다시 시작하지 않고도 즉시 변경할 수 있다는 것입니다. 우리 가게의 가격은 전적으로 가치가 있으며 사용하기가 쉽지 않습니다.


0

나는 AndroidTV 기본 장치에서 낮은 인터넷을 조절해야했고 내가 읽은 것을 기반으로 가장 적합한 솔루션은 라우터에서 직접 인터넷 액세스를 제한하는 것이 었습니다.
라우터 설정으로 이동하십시오 (로컬은 192.168.0.1과 같이 로컬입니다)-> DHCP 서버 설정 (실행 중이 아닌 경우)-> 장치의 IP 주소를 선택하고 제한을 설정하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.