web-dev-qa-db-fra.com

Simuler une connectivité réseau faible pour Android

Je souhaite tester mon application pour les cas de faible connectivité réseau. Sauf dans l'ascenseur, quel est le meilleur moyen de le faire? J'ai essayé d'envelopper mon téléphone dans une feuille d'aluminium, mais cela ne m'a pas beaucoup aidé.

Je dois le tester sur un périphérique réel, pas sur un émulateur.

192
Maggie

Vous pouvez utiliser l'émulateur pour cela. Jetez un oeil à cette page: Android Emulator . Faites attention aux deux arguments suivants:

  1. -netdelay <delay>

    Définissez l’émulation de latence du réseau sur. La valeur par défaut est none. Voir le tableau dans Émulation de délai réseau pour les valeurs prises en charge.

  2. -netspeed <speed>

    Définissez l’émulation de la vitesse du réseau sur. La valeur par défaut est pleine. Voir le tableau dans Émulation de la vitesse du réseau pour connaître les valeurs prises en charge.

96
inazaruk

Cela peut sembler un peu fou, mais un four à micro-ondes sert de bouclier pour micro-ondes. Par conséquent, si vous placez votre appareil dans un four à micro-ondes (N'allumez PAS le four à micro-ondes lorsque votre appareil est à l'intérieur!), La force de votre signal baissera considérablement. Ça vaut vraiment le coup d'être debout dans un ascenseur ...

247
Shams Shafiq

Puisque iPhone option de développeur s’applique au modem WIFI, vous pouvez obtenir un iPhone doté de iOS 6 et de versions ultérieures (et défini sur use for developments avec le xcode), configurez-le pour émuler le profil réseau souhaité, connectez votre appareil Android à son point d'accès

enter image description here

97
Kirill Kulakov

Mise à jour pour Android Studio v 1.5 ou supérieur
Comme @LouMorda a mentionné dans un commentaire ci-dessous que l'onglet Emulator mentionné dans le message d'origine a été supprimé dans Android Studio v 1.5.

Maintenant, ils ont placé ces paramètres dans les paramètres du simulateur dans AVD Manager.
Pour accéder à ces paramètres:

  1. Sélectionnez Tools -> Android -> AVD Manager
  2. Cliquez sur le bouton Edit AVD (icône représentant un crayon).
  3. Le Network Settings est accessible après avoir cliqué sur le bouton Show Advanced Settings.

Voici une capture d'écran de la façon dont cela peut apparaître:
Network Speed and Latency Settings in Android Studio v 1.5

Message original
Pour toute personne utilisant Android Studio IDE:

  1. Allez à Run -> Edit Configurations
  2. Sélectionnez Android Application -> [Your App]
  3. Sélectionnez l'onglet Emulator
  4. Ici, vous pouvez modifier différentes valeurs pour Network Speed et Network Latency afin de simuler différentes vitesses et latences, etc.

Vous pouvez également entrer différents arguments dans le champ de texte Additional command line options, comme indiqué dans la réponse de @inazaruk.

La capture d'écran ci-dessous décrit l’apparence de cet écran Run Configuration:

Run Configurations Screen in Android Studio beta 0.8.6

Je sais que c'est un peu tard pour répondre à cette question, mais j'espère que cela aidera d'autres personnes aux prises avec des problèmes similaires!

Modifier
Pour ceux qui utilisent Eclipse, voir réponse de @ Abhi ci-dessous.

65
S1LENT WARRIOR

Je sais que c'est une vieille question mais ...

De nos jours, certains téléphones ont été configurés pour n’utiliser que la 2G. C'est parfait pour simuler une connexion Internet lente sur un appareil réel.

enter image description here

40
Pkmmte

Ans mais bon, je vais ajouter ma méthode infaillible avec Genymotion.

  • Téléchargez la version d'essai gratuite de Charles: http://www.charlesproxy.com/download/

  • Installez-le

  • ClickProxy -> Throttle Settings

  • Configurez votre vitesse HTTP accélérée

  • Fermer cette fenêtre

  • Cliquez Proxy -> Throttling pour activer la manette.

  • Ouvrez un émulateur Genymotion

  • Ouvrez les paramètres wifi

  • Appuyez longuement sur la connexion wifi activée

  • Cliquez Modify Network

  • Cliquez Show Advanced Options

  • Définissez Proxy sur Manual

  • Réglez le Proxy hostname sur 10.0.3.2

  • Réglez le Port sur 8888

  • Cliquez Save

Et maintenant, votre réseau sera étranglé!

33
VicVu

J'ai une stratégie pour régler votre problème. Vous pouvez utiliser l'application de proxy pour modifier ou surveiller votre statut net. par exemple, Charles .

Vous devriez changer la configuration par défaut du Charles comme sur la photo suivante que j'ai postée.

Open Your Throttle Setting

Setting Your Throttle Setting

Et finalement, vous découvrirez que le statut net a été façonné à un rythme plus lent.

Before

Setting After

11
Benchur Wong

Un moyen facile de tester votre application avec une connexion faible/mauvaise dans l'émulateur:

Allez Exécuter> Exécuter les configurations, sélectionnez votre onglet Application Android, puis passez à l'onglet Cible. Look paramètres de lancement de l'émulateur. Ici, vous pouvez facilement modifier la vitesse du réseau et la latence du réseau.

8
pgarriga

Il existe un moyen simple de tester les basses vitesses sur un appareil réel qui semble avoir été négligé. Il nécessite un Mac et une connexion réseau Ethernet (ou autre).

Activez le partage Wi-Fi sur le Mac, convertissez votre ordinateur en point d'accès Wi-Fi, connectez votre appareil à cela. Utilisez Netlimiter/Charles Proxy ou le conditionneur de liaison réseau (que vous avez peut-être déjà installé) pour contrôler les vitesses.

Pour plus de détails et pour comprendre quel type de vitesses vous devriez tester lors de votre départ: http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps -on-pauvres-connexions /

8
James_OSM

Vous pouvez également tester la connectivité Internet lente sur un vrai périphérique Android:

Testé avec Samsung Galaxy S8 + Android 8.0.0

Allez à Paramètres -> Connexion -> Réseau mobile -> et sous mode résea vous pouvez choisir d'utiliser uniquement - 2G ou Gconnexions

7
rm -rf

Facebook construit quelque chose appelé Contrôle du trafic augmenté . Un bref résumé de leur page GitHub:

Augmented Traffic Control (ATC) est un outil permettant de simuler les conditions du réseau. Il permet de contrôler la connexion d’un appareil à Internet. Les développeurs peuvent utiliser ATC pour tester leur application dans diverses conditions de réseau, en émulant facilement des réseaux à haut débit, mobiles et même gravement endommagés. Les aspects de la connexion qui peuvent être contrôlés incluent:

  • bande passante
  • latence
  • perte de paquets
  • paquets corrompus
  • commande de paquets

Pour pouvoir mettre en forme le trafic réseau, l'ATC doit s'exécuter sur un appareil qui l'achemine et voit la véritable adresse IP de l'appareil, comme votre passerelle réseau, par exemple. Cela permet également à tous les périphériques qui acheminent via l'ATC de déterminer leur trafic. Le trafic peut être configuré/non configuré à l'aide d'une interface Web permettant à tout périphérique doté d'un navigateur Web d'utiliser l'ATC sans avoir besoin d'une application cliente.

Vous pouvez le trouver ici sur GitHub: https://github.com/facebook/augmented-traffic-control

Ils ont également écrit un billet de blog à ce sujet: https://code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/

6
Anirudh

Je suis surpris que personne n'en ait parlé. Vous pouvez lier via Bluetooth et les séparer de plus de dix mètres (ou moins avec des obstacles). Vous avez une vraie mauvaise connexion. Pas de micro-ondes, pas d'ascenseur, pas de logiciel nécessaire.

6
yhm

Ou, sur un appareil réel, vous pouvez accéder à Paramètres -> Réseaux mobiles -> Types de réseaux préférés et choisir le réseau le plus lent disponible ... Bien sûr, cela reste très limité, mais cela peut suffire à des fins de test.

4
jpm

Dans Android Studio, lors de l'exécution d'un émulateur:

1- Appuyez sur le bouton des paramètres en bas de la barre latérale de l'émulateur.

2- Aller au cellulaire

3- Définir le type de réseau

Screenshot

4
Mert Kahraman

UPDATE sur le Android studio AVD:

  1. ouvrir le gestionnaire AVD
  2. créer/éditer AVD
  3. cliquez sur les paramètres avancés
  4. sélectionnez votre paramètre de connectivité préféré

Pas de micro-ondes ou d'ascenseurs :)

3
nurxyz

pour et utilisateur Mac OS, vous pouvez utiliser Network Link Conditioner qui peut être téléchargé à partir Apple. définissez-le comme un AP sur mac et toutes les divisions pourraient le connecter.

vous pouvez soit utiliser les outils Facebook open source ATC http://facebook.github.io/augmented-traffic-control/

3
Lucas Liu

Souhaitez-vous tester l'absence de connexion réseau ou simplement une connexion réseau lente? Si c'est le cas, vous pouvez aller à Settings > Wireless & networks > Airplane mode et activer le mode Avion. Cela vous permettra de tester l’indisponibilité du réseau sur un appareil réel.

2
David Conrad

Je me débattais avec ce problème pendant une demi-journée et je suis finalement arrivé à cette solution:

  • Tester sur un vrai appareil n'a pas beaucoup de sens dans l'ensemble car il faut beaucoup en faire pour que cela fonctionne. Le seul moyen logique de réaliser de véritables tests consiste à connecter votre téléphone à un réseau cellulaire de qualité médiocre, tel que Edge, si votre opérateur téléphonique le fournit. Vous pouvez essayer de le faire en composant *#*#4636#*#* dans l'application téléphonique.

  • L'émulateur original Android est beaucoup trop lent pour les tests et ne produit pas plus que la solution ci-dessus.

La meilleure façon de faire est d'utiliser Genymotion . C'est un émulateur Android aux performances bien supérieures à celles des AVD d'origine et la version destinée à un usage personnel est gratuite.

Genymotion emulator

Après avoir créé votre périphérique virtuel dans Genymotion, passez simplement ce tutoriel pour définir un proxy pour le périphérique.

Exécutez un serveur proxy sur votre ordinateur hôte qui simule de mauvaises conditions de réseau, comme Crapify ou Toxiproxy (je n’ai testé que l’ancien) et vous êtes prêt à partir.

Mise à jour:

Je viens de me rendre compte que vous pouvez choisir la même stratégie avec de vrais appareils. Je me sens idiot de ne pas m'en rendre compte plus tôt. Il suffit de démarrer un proxy Crapify sur votre ordinateur, de définir votre proxy de téléphone sur l’adresse locale de votre ordinateur et le tour est joué, vous avez un Internet de merde sur votre téléphone.

2
Iman Akbari

Allez sur Exécuter> Exécuter les configurations, sélectionnez votre application Android, puis allez sur l'onglet Cible. Effectuez les modifications comme indiqué dans l'illustration.

enter image description here

2
Abhi

J'utilise un proxy HTTPS mitmproxy . https://mitmproxy.org/

Mitmproxy est une application proxy open source qui permet d'intercepter les connexions HTTP et HTTPS entre tout client HTTP (S). Il permet de surveiller, capturer et modifier ces connexions en temps réel. Demande de changement, réponse, en-tête, ... De plus, vous pouvez intercepter différentes demandes.

par exemple. response_delay.py :

from mitmproxy import http
from time import sleep

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

Ensuite, l’exécution de ce commentaire retarde toutes les réponses du serveur:

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

Dans mon application, j'utilise un épinglage de certificat. Vous devez donc ajouter le certificat (privé + public).

cat private.key public.key> cert.pem

Vous pouvez trouver un tutoriel simple ici .

Vous pouvez trouver d'autres exemples de script ici .

1

J'ai trouvé que netlimiter4 était la meilleure solution pour limiter les données aux émulateurs. Il fournit un contrôle granulaire via une interface graphique correcte et vous fournit un retour graphique sur le débit de données pour chaque processus. Actuellement en version bêta gratuite. capture d'écran

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

Il existe des applications disponibles sur le Play Store pour limiter les appareils réels, mais elles requièrent un accès root (je ne peux pas vous donner de conseils sur la qualité de leur fonctionnement, voire pas du tout - YMMV.)

rechercher bradybound sur le Play Store, je ne peux pas poster plus d'un lien ..

1
Michael.

Allez simplement sur Android moniteur de périphérique depuis Android studio, puis DDMS -> Contrôle de l'émulateur. Il y aura des propriétés de vitesse et de latence.

1
Lester
  1. Ouvrez le terminal dans Android Studio et accédez à la page ../../Android/sdk/tools. L'exécutable 'émulateur' devrait être disponible ici.

  2. Exécutez ./emulator -netdelay "delay_in_millis" -avd "emulator_device_name"

    Ex: ./emulator -netdelay 60000 -avd Nexus_5_API_21

  3. Maintenant, construisez votre application et installez-la dans l'émulateur.

  4. Exécutez votre scénario dans l'application.

Assurez-vous que vos modifications de code dans l'application définissent le délai d'expiration de votre demande et le gèrent.

1
cgr

avez-vous essayé cela? Paramètres - Réseaux - Plus - Réseaux mobiles - Mode réseau - Sélectionnez votre réseau préféré (2G par exemple).

Une autre méthode que j'ai utilisée a été mentionnée ci-dessus. Connectez-vous via le point d'accès iPhone. J'espère que cela t'aides.

1
Charlie Brown

comme suggéré par @VicVu Charles (ou tout autre outil proxy) est un moyen plus facile d'aller. Mais j'aimerais ajouter que vous pouvez le faire avec votre appareil également, pas seulement avec Genymotion ou d'autres émulateurs. Le processus sera le même:

Modifiez les paramètres wifi de votre périphérique/émulateur pour utiliser un proxy manuel. Et ensuite, définissez le nom d'hôte et le port du proxy a. définissez le nom d'hôte comme ip de votre système (obtenez l'ip de votre pc/mac en utilisant ifconfig/ifconfig) b. définir le numéro de port de genymotion (vérifier les paramètres du proxy dans charles)

PS: Votre appareil/émulateur DOIT utiliser le même Wi-Fi, car l'adresse IP que vous utilisez sera probablement l'adresse IP privée.

1
Ankit

Très vieux message, mais je vais ajouter mes deux cents. Je suis TRÈS satisfait de ce produit matériel ( https://apposite-tech.com/products/linktropy-mini/ ) qui nous a permis de simuler de nombreuses conditions réelles. Pendant longtemps, nous avons eu du mal à résoudre divers problèmes susceptibles de fonctionner en mode émulateur ou en mode avion.

Nous avons plusieurs profils différents configurés, allant de la connectivité nulle à différentes étapes de la connectivité marginale, avec différents degrés de latence, perte de paquets et erreurs de bits. L'avantage, c'est que nous pouvons les changer à la volée sans avoir à relancer l'application dans un émulateur. Le prix en a entièrement valu la peine pour notre magasin et son utilisation est extrêmement simple.

0
Benjamin Johnson