JOSHUA PRICE

Comment réparer les pannes d'applications sur Android

2022-10-28

La principale raison des plantages dans la plupart des cas est un manque de mémoire vive. Découvrons comment la RAM fonctionne sur les appareils Android et essayons d'éliminer les pannes. Touchons également quelques autres éléments qui peuvent être à l'origine du problème.

Le mot "crash" est couramment utilisé pour désigner l'arrêt forcé d'un programme en cours d'exécution (ou d'un jeu) sur un smartphone/tablette fonctionnant avec le système d'exploitation Android. Dans la grande majorité des cas, cela est dû à une pénurie de mémoire vive (également appelée RAM), qui est l'endroit où sont chargées toutes les données des applications exécutées sur l'appareil à ce moment-là. Lorsque la RAM n'est pas suffisante pour enregistrer de nouvelles informations, le système Android ferme de force les processus en cours d'exécution afin de la libérer.

Pour mieux comprendre la cause des plantages de programmes sur Android, nous devons comprendre comment tout cela fonctionne de l'intérieur. Tout d'abord, voyons comment le système gère la RAM et pourquoi il manque parfois de mémoire. Cela nous aidera également à répondre à la question comment réparer les crashs.

Qu'est-ce que la RAM dans Android et comment affecte-t-elle les crashs

Il convient de mentionner que le système d'exploitation Android est basé sur le noyau Linux. Chaque fois que nous exécutons un programme (ou un jeu) sur notre appareil, un processus spécial pour cette application est créé dans le noyau. Elle est nécessaire pour déterminer la quantité de ressources qui sera " allouée " à l'application en cours d'exécution : quelle quantité de RAM allouer, quelle puissance de processeur est nécessaire, quelles requêtes réseau effectuer, quelles opérations d'E/S (ce qu'il faut écrire ou " récupérer " dans la mémoire persistante), et ainsi de suite.

En bref, toute application en cours d'exécution est un processus créé dans le système qui demande à Android une certaine quantité de ressources matérielles différentes.

Et que se passe-t-il si le processus demande la quantité de RAM qui lui est " allouée ". Après tout, dans le cas de la capacité du CPU, si un programme nécessite une certaine quantité de ressources CPU, il les recevra 100 % du temps, car la ressource CPU est, conventionnellement parlant, une valeur infinie. Toute tâche sera exécutée par le processeur, la question est seulement le temps.

Mais la quantité de mémoire, comme nous le savons, est strictement limitée. A ces moments-là, un "crash" se produit : le programme a demandé autant de mémoire que le système ne peut en fournir et la poursuite de l'exécution du processus est impossible.

Si nous le disons simplement : chaque clic sur l'icône d'une application lance son processus qui demande au noyau avec une question du type : "J'ai besoin de tant de ... RAM pour pouvoir au moins redémarrer et montrer le menu principal à l'utilisateur". Ensuite, si nous avons besoin de plus de ROM, le processus appelle à nouveau le noyau : " J'ai besoin de tant de ... mémoire pour charger ces fichiers, ceux-ci et ... ".

Selon l'application, nous avons besoin de différentes quantités de RAM pour l'application. Par exemple, si vous exécutez un jeu "lourd" et encombrant avec des graphiques en 3D, il exigera beaucoup plus de cette mémoire qu'un messager ou un navigateur web. En effet, ces jeux sollicitent trop le processeur et le cœur graphique. Chaque élément des textures (voitures, armes, etc.) doit en fait être stocké quelque part en mémoire pour être utilisé ultérieurement. Tout cela est stocké dans la mémoire principale utilisée par les applications en cours d'exécution.

C'est une bonne chose que notre système dispose de services spéciaux dédiés à la libération de la mémoire, c'est-à-dire à sa libération. Lorsque nous fermons un programme, le processus est "tué" : il est simplement déchargé de la mémoire et libère la partie de celle-ci précédemment utilisée. La mémoire libérée va dans le pool de "mémoire libre", dans lequel le noyau va puiser les mégaoctets qui lui sont chers pour d'autres applications en cours d'exécution. Cela se traduit par "Mémoire libre".

Mais le système possède également un autre pool qui s'appelle "Mémoire disponible", qui se traduit par "Mémoire disponible". Il semblerait que ce soit la même chose. Quelle est la différence ?

Qu'est-ce que la mémoire disponible et la mémoire libre

Généralement, il n'est pas avantageux pour le système d'exploitation de conserver de grandes quantités de mémoire en tant que mémoire libre, c'est-à-dire dans le pool "Mémoire libre". Pourquoi ? Simple. Android est un mécanisme tellement vaste que toute mémoire libre peut être "bourrée" quelque part. Par exemple, pour donner au noyau du système la possibilité d'effectuer certaines tâches vitales pour le périphérique, ou pour mettre à disposition des programmes qui sont déjà en cours d'exécution.

La logique derrière cela est qu'à tout moment dans le futur, un programme peut avoir besoin de plus de mémoire et pour qu'il ne fasse pas de demandes au noyau, perdant du temps, on lui alloue de la mémoire "supplémentaire" dont il n'a pas besoin maintenant, mais qui pourrait être utile. C'est ce qu'on appelle la mémoire disponible, qui est stockée dans le pool "Mémoire disponible". A tout moment, il peut cesser de jouer le rôle de "ligne de vie" ou de repli, en étant utilisé directement.

Méthodes internes pour libérer la RAM

Pour la raison déjà décrite ci-dessus, le noyau Android utilise autant de mémoire que possible. Tant que le système dispose de suffisamment de mémoire, il peut le "balancer" assez librement. Il arrive cependant un moment où les ressources sont insuffisantes, ne serait-ce que pour exécuter un programme. D'où vient la mémoire alors ? Il existe plusieurs solutions :

  1. Arrêter un processus (application).
  2. La technologie ZRAM .
  3. Avec un fichier d'échange - SWAP (mémoire qui est "convertie" à partir d'un stockage persistant, par exemple une carte mémoire, pour être utilisée comme RAM).

Nous parlerons plus longuement des fichiers de remplacement , d'ailleurs, lorsque nous en viendrons aux recommandations.

La première variante signifie que le noyau "tue" simplement un processus de programme qui était précédemment en cours d'exécution, afin de libérer de l'espace dans la RAM pour les données du nouveau programme. Par exemple, nous avons lancé 5 applications dans cet ordre (important à retenir) : WhatsApp, Viber, Facebook, Gmail, Subway Surfers et nous voulons ouvrir YouTube, mais les ressources ont disparu. Que va-t-il se passer ? Le système examinera les processus déjà en cours et mettra fin à WhatsApp, car il a été lancé en premier (utilisé par nous il y a longtemps, par rapport à Gmail et au reste). Et le noyau est totalement indifférent quant à savoir si nous avons encore besoin de WhatsApp ou non. C'est le prix de la question.

La deuxième option avec ZRAM est plus indulgente. L'idée est que, afin d'allouer une certaine quantité de mémoire au processus, le noyau accède à une partie de la mémoire déjà occupée et la compresse, créant ainsi une sorte d'archive. Ces archives sont ensuite placées dans la mémoire interne (disque dur) et y sont conservées jusqu'à ce qu'elles soient à nouveau nécessaires. Si nous considérons la situation des 5 applications ci-dessus de manière analogue, quelque chose comme ceci se produirait :

  1. Recherche de "WhatsApp" qui fonctionne depuis longtemps.
  2. Recherche de morceaux de mémoire dédiés à "WhatsApp" qui sont rarement utilisés.
  3. Archivage (compression) de ces morceaux et écriture sur le disque dur (ROM).

Cela libère la mémoire pour la nouvelle application. Cependant, pour accéder à nouveau à WhatsApp, le système lit l'archive stockée sur le périphérique de stockage et la décompresse. Tout cela prend du temps (pendant ces moments, d'ailleurs, diverses saccades du système se produisent, lors du passage d'un programme à l'autre), donc ZRAM n'est pas non plus la technologie la plus idéale.

Méthodes manuelles de libération de la DRAM

En fait la grande quantité de programmes pour libérer la RAM présents dans la boutique Google Play sont pratiquement inutiles. Et ce, malgré le fait que les développeurs de ces utilitaires essaient parfois très fort de nous convaincre que c'est leur utilitaire qui résoudra tous nos problèmes de manque de RAM. Non pas qu'il soit difficile de qualifier ce logiciel d'efficace, il est même difficile de le qualifier de sans danger pour le système, car les questions ne se posent que sur sa nocivité.

Comme nous l'avons dit précédemment, Android disposait à l'origine de plusieurs modes de gestion de la mémoire vive, qui existaient il y a de nombreuses années. Et maintenant, les nouvelles versions d'Android 10 et 11 sont dotées de mécanismes de plus en plus avancés. Le système lui-même garde la trace de la mémoire et donne la priorité aux applications qui doivent être fermées afin d'allouer des ressources. Par conséquent, l'installation de tout logiciel de nettoyage de la mémoire vive est une initiative inutile.

Nous allons examiner des moyens plus réalistes, bien que moins efficaces, non pas pour libérer de la mémoire (le noyau le fera parfaitement pour nous), mais pour l'économiser. Les méthodes pour les appareils avec peu de RAM sont particulièrement pertinentes.

Désactiver la synchronisation

La première et la plus sûre façon d'économiser de la RAM est de désactiver la synchronisation des applications installées. Cela s'applique au courrier, aux différents comptes, etc. Cela peut se faire comme suit :

Étape 1 . Ouvrez les paramètres du système.

Étape 2 . Trouvez l'élément "Utilisateurs et comptes" (peut être nommé "Comptes" ou "Comptes" ). Selon le fabricant de l'appareil et le shell, ces éléments peuvent avoir des noms très différents. Nous recherchons quelque chose de similaire.

Étape 3 . Trouvez le paramètre "Auto-sync data" (ou encore quelque chose de similaire) et désactivez-le.

Maintenant, cela réduira la quantité de RAM et aidera même l'autonomie de la batterie car il y a maintenant moins d'activité et de "vie" dans le système qui est intensif en CPU et en RAM.

Reprioriser les applications

Dans les versions modernes d'Android, il y a une option qui nous permet de définir chaque application installée sur le système à une priorité d'exécution. Par exemple, pour certains, nous pouvons limiter manuellement l'activité de fond et donc la quantité de ressources à leur allouer. D'autres cependant peuvent être définis à un certain statut et ils peuvent librement et facilement "errer" autour du système en demandant la bonne quantité de mémoire, de ressources cpu etc.

Pour définir les priorités, nous faisons ce qui suit:

Étape 1 . Connexion aux paramètres de l'appareil.

Étape 2 . Trouvez la ligne "A propos" ou Système" ou "A propos du téléphone" et ouvrez-la.

Etape 3 . Trouvez la ligne "Build number" et cliquez 5-10 fois jusqu'à ce que la popup "No need, you are a developer" apparaisse.

Étape 4 . Revenez un pas en arrière et dans cette section, nous trouvons le menu affiché "Pour les développeurs" . Activez-le.

Etape 5 . Trouvez la ligne "Applications inactives" et cliquez dessus.

Etape 6 . Dans la liste, nous trouvons les programmes que nous utilisons rarement et nous fixons l'une des deux valeurs (la deuxième est la meilleure) : "FREQUENT", "RARE".

Que représentent ces priorités ? Chaque programme peut recevoir un total de 4 valeurs. Ce système peut être considéré comme 4 boîtes, chacune ayant ses propres caractéristiques. Le terme "ACTIF" signifie que les applications d'un segment donné ne seront limitées en aucune façon, et pourront consommer autant de ressources qu'elles le souhaitent. Ensuite, dans l'ordre décroissant de "liberté", on trouve les cases "TRAVAIL", "FRÉQUENT" et "RARE".

Android analyse automatiquement nos actions et affecte dans le temps les utilitaires à l'une ou l'autre case (catégorie), mais on peut aussi le faire manuellement. L'essentiel est de définir les programmes que l'on souhaite restreindre.

Il faut noter que le processus de déverrouillage du menu "Pour les développeurs" peut varier en fonction de la version et du skin Android installé (MIUI, One OS, AOSP etc.).

Installer Greenify

Oui, ci-dessus nous avons déjà argumenté sur l'efficacité de différentes applications visant à libérer de la RAM, augmenter les performances du système et améliorer le multitâche en 2 clics. Mais il est bon de préciser tout de suite que Greenify n'est pas un task-killer primitif qui nous promet des gigaoctets de RAM libre et un multitâche génial.

La théorie dont nous avons parlé au début de cet article nous a permis de comprendre un peu tout le mécanisme d'interaction entre la RAM et Android. Nous pouvons en conclure que, pour avoir plus de mémoire libre, nous devons limiter le nombre d'applications qui peuvent essayer d'y accéder. Nous n'allons pas "génocider" les programmes en cours d'exécution et tuer les processus sans procès, comme le suggèrent divers gestionnaires de tâches. Nous allons suivre une autre voie - nous allons empêcher l'activité de fond. Cela peut être fait avec le programme Greenify .

L'utilitaire lui-même fonctionnera sur presque n'importe quel appareil, mais nous aurons besoin d'un accès root pour qu'il puisse accomplir notre tâche de garder l'activité de fond pour se produire et bloquer les autres applications.

Etape 1. Téléchargez l'utilitaire depuis la boutique officielle Google Play.

Etape 2. Lancez-le et suivez les étapes des captures d'écran - sautez le paramètre d'hibernation intelligente et sélectionnez le mode ROOT.

Etape 3. Allez dans les paramètres (appuyez sur les "trois points" dans le coin supérieur droit) et activez les éléments suivants : "Sommeil agressif" , "Surveillance du réveil et coupure" et "Ignorer toujours aucun arrière-plan" .

Étape 4. nous ajoutons les applications dont nous voulons restreindre l'activité.

Pourtant, même cette variante est encore discutable puisque la quantité de mémoire fournie par Greenify est en théorie "compensée" à près de 100% par les services de l'application elle-même qui sont nécessaires à son fonctionnement. Cependant, cela vaut vraiment la peine d'essayer. Surtout ceux qui ont un accès root et, encore mieux, un Xposed Framework installé.

Créer un fichier Swap

Cette méthode permet d'étendre la mémoire, pas de l'économiser. Ensuite, nous allons essayer de créer un fichier SWAP qui sera utilisé par le système. Cela augmentera en fait la quantité de RAM disponible sur le stockage externe, la carte SD.

Veuillez noter: pour créer le fichier SWAP, le périphérique doit avoir un accès root, le BusyBox doit être installé et le noyau doit supporter la technologie de swappiness. Les instructions ci-dessous supposent que votre appareil répond avec succès à ces 3 exigences.

Comment créer un fichier d'échange pour étendre la RAM faites ce qui suit :

Etape 1. Vérifiez que la carte SD que vous souhaitez allouer à la RAM est libre.

Etape 2. Vérifiez si le logiciel dont vous avez besoin est compatible avec l'appareil. Pour ce faire, nous téléchargeons cet utilitaire depuis la boutique officielle Google Play. Installez et démarrez en donnant un accès root.

Étape 3. Démarrez le test en appuyant sur "Start Ramexpander Test Here" . Sélectionnez l'emplacement où le fichier de test doit être créé et attendez un moment.

Étape 4. Une fois le test terminé, nous verrons un message indiquant si le périphérique prend en charge la création d'un fichier d'échange.

Étape 5. Si le point 4 est OK, installez directement le logiciel SWAP depuis ce forum (connexion requise). Démarrez-le et fournissez root.

Etape 6. Appuyez sur le bouton "valeur optimale" afin de déterminer la taille du fichier SWAP nécessaire au système.

Etape 7. Il vous est ensuite demandé de choisir la partition pour le fichier swap. Vous sélectionnez votre carte mémoire et une valeur optimale.

Etape 8. Attendez un moment et assurez-vous que le processus est réussi après l'apparition d'un message de confirmation. Le succès est également indiqué par une notification.

C'est important ! L'obtention d'un accès root sur la plupart des appareils modernes peut entraîner une perte totale de fonctionnalité. Le processus ne sera pas décrit dans cet article, car les moyens d'obtenir un accès root varient, en fonction du fabricant et d'autres nuances. Pour plus d'informations sur l'enracinement, veuillez visiter le forum 4PDA.

Autres causes de plantage d'applications

Une variété de bugs logiciels peut être une autre cause de plantage d'applications. Il arrive souvent qu'une mise à jour du micrologiciel ou une mise à niveau vers une version plus récente d'Android provoque des bogues et des problèmes ultérieurs avec certaines applications, y compris des plantages.

La solution ici n'est pas aussi facile qu'il n'y paraît puisque le problème n'est pas dans notre "champ de vision". Tout ce que nous pouvons faire en tant qu'utilisateur régulier est de réinstaller le programme ou d'attendre les nouvelles mises à jour du développeur. Par conséquent, si la raison pour laquelle une application particulière se bloque n'est pas liée à la quantité de RAM libre, vous pouvez essayer de la réinstaller tout simplement. La mise à jour du firmware à la dernière version peut également aider.

Conclusion

Dans cet article, nous avons essayé de comprendre un peu le mécanisme assez complexe et large de la façon dont Android fonctionne avec la RAM. Et les quelques moyens décrits ci-dessus permettront de maintenir la quantité de mémoire disponible à un niveau supérieur à ce qu'il était auparavant.

“Rain Dog Software fournit des services web et logiciels pour les particuliers et les petites entreprises. Nous sommes spécialisés dans les applications web Python/Django et le contenu WordPress. “

JOSHUA PRICE
foto