Android : La publication d'une application

Optimiser ses logs

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Apprenez à gérer vos logs et faites en sorte qu'ils ne s'affichent pas en publiant votre application.
08:37

Transcription

Dans cette vidéo, je vais vous montrer une façon de gérer vos logs, mais également, comment faire en sorte de retirer tous vos logs uniquement en mode production. Pourquoi retirer nos logs en mode production ? Eh bien, tout simplement, car une fois en production, l'application sera téléchargée depuis le Playstore, et tous les logs, vous n'y aurez pas accès, il est inutile d'écrire tous ces logs, vu que cela va ralentir l'application, surtout si vous écrivez énormément de logs. Je vais vous montrer une astuce pour gérer les logs, du moins une façon de faire, il en existe d'autres, qui vous inspirera peut-être votre propre façon. Je vais créer une classe que je vais appeler « LogUtils ». C'est cette classe qui va me servir à « logger ». Je vais créer donc une méthode « public static » que je vais appeler « log() », qui va prendre deux choses. Qui va prendre un message, et le type de log. Pour le type de log, on va créer une énumération, « public enum TypeLog ». Alors, qu'est-ce que j'appelle par type de log ? Eh bien, je vais par exemple créer un type de log pour les URL, c'est-à-dire tous les URL que mon application appelle. Les écrans qui sont affichés, donc par exemple, les différentes activités par lesquelles passe mon application. Cela peut être très pratique si quelqu'un de nouveau arrive sur votre projet qui contient plus d'une centaine d'écrans, que vous lui dites de travailler sur un écran particulier, il n'y a qu'à regarder les logs, et on voit par exemple, l'activité qui correspond au nom de cet écran. On peut en faire pour d'autres éléments, par exemple des exceptions, les appels Bluetooth, les appels reçus depuis le serveur, etc., etc., en fonction des besoins. Pour chaque élément de mon énumération, je vais définir un tag. Donc, je vais faire « TAG_ », et le nom de l'énumération, rien de très compliqué, donc ici, je vais créer mon constructeur, qui va donc prendre un tag, et ce tag, je vais créer une variable. Je vais redéfinir la méthode « toString » qui fait qu'au lieu d'afficher le nom de l'énumération, il affichera le tag. Même chose pour l'écran, et pour les exceptions. Alors, si vous regardez, ils ont tous en commun « TAG_ », alors quel est l'intérêt de mettre « TAG_ » ? C'est qu'une fois que je lance mon application, je vais dans l'« Android Monitor », et ici, je vais pouvoir taper quel type de tag j'ai envie de voir. Donc, si j'ai envie de voir tous mes tags, je tape « TAG_ », et ça n'affichera que les lignes de mes logs à moi. Si je veux voir les URL, « TAG_URL », l'écran, « TAG_ECRAN », et ainsi de suite. Maintenant, je prends donc ici un message, et regardez, le même ordre, « TypeLog typeLog », et je n'ai plus qu'à afficher. « Log.w(typeLog, message) ». Je vais donc maintenant, lors de ma requête, ici, plutôt que de marquer « TAG_URL », je vais pouvoir faire « LogUtils.log » de « TypeLog.URL, » mon « url ». Et je pourrais faire ça dans tous les logs de mon application, donc c'est une façon de gérer les choses. Et un des grands intérêts, c'est que je vais pouvoir faire un « if », je suis en « debug », j'affiche mes logs, sinon, je ne les affiche pas. Comment savoir si je suis en « debug » ou non ? Il existe, vous pouvez trouver cette version, « BuildConfig.DEBUG », sauf que si vous cherchez un peu des informations dessus, vous allez voir qu'il existe certaines versions Android, il y a quelques bugs qui fait que elles ne fonctionnent pas tout le temps. Donc, l'autre version que je vais vous proposer, c'est celle qu'on a commencé à mettre en place. C'est-à-dire que dans la précédente vidéo, je vous ai fait créer un répertoire « refs.xml » en « debug » et en « release », et dedans, je vous ai mis un booléen, « debug », « true » ou « false ». J'ai donc plus qu'à récupérer ce booléen et à l'afficher. Alors, soit je le fais à chaque fois que j'en ai besoin, soit je crée une constante. Alors, si je dois créer une constante, il faut qu'elle soit initialisée au démarrage de l'application. La seule classe dont on est sûr qu'elle démarre avec l'application, c'est la classe qui étant la classe « Application ». Donc, je vais créer une classe que je vais appeler « MyApplication », que je vais faire étendre de la classe « Application » d'Android. Dans cette classe, il y a la méthode « onCreate » qui est lancée au démarrage de l'application, et c'est donc ici que je vais pouvoir créer mes constantes. Donc, soit je crée un fichier de constante, soit je mets directement ma valeur. « static boolean DEBUG ». « DEBUG = getResources() .getBoolean(R.bool.debug) ». Voilà, j'ai donc rempli ma variable, il me reste plus qu'à référencer ma classe « Application » dans l'« AndroidManifest », ma classe est référencée, donc au démarrage de l'application, je passerai par la méthode « onCreate », et je remplirai ma variable « DEBUG ». Donc, cette variable « DEBUG » est maintenant accessible dans toute l'application. Je vais donc pouvoir l'utiliser dans la classe « LogUtils » et faire « if (MyApplication.DEBUG) » j'affiche mes logs, sinon je ne les affiche pas. Autre avantage de cette classe, je vais pouvoir rajouter des méthodes du style « public static void logException() », qui prendra une exception, et que je vais, moi-même, pouvoir afficher dans le format que je veux. « (TypeLog.EXCEPTION, exception.getMessage()) », pour rajouter les choses dont j'ai besoin. Je vais pouvoir créer « public static void logTemp() », alors « Temp » pour temporaire. Quel est l'intérêt de cette méthode ? Alors, je vais vous montrer. Ici, j'en rajoute un autre. C'est que des fois, on est en train de travailler sur notre application, et quelque chose se passe mal, et on veut mettre des logs. Donc, dans ce cas-là, on va faire « LogUtils.logTemp », je mets ce que je veux, et des fois, on va se retrouver avec plusieurs logs, plus d'une vingtaine de logs un peu partout pour vérifier le passage. On continue sur notre application, et on a envie d'enlever tous ces logs. Alors déjà, grâce à cette version, je sais qu'ils ne seront pas affichés en production, mais derrière, si je veux nettoyer le code, je sais que « logTemp » est une méthode qui ne sert que pour les logs temporaires que je suis sensé enlever une fois que j'ai corrigé mon bug. Je peux faire un clic droit dessus, « Find Usages » et je vais me retrouver avec tous les endroits où c'est utilisé, et là, je fais, ah, ici, j'ai oublié de l'enlever, je l'enlève, quand je reviens dans « logTemp », tant qu'il n'est pas grisé, c'est qu'il est encore utilisé. Voilà, il est passé en grisé, il n'est plus utilisé, ce qui me permet de nettoyer un petit peu mon code. Vous avez maintenant quelques astuces sur comment travailler avec les logs, et surtout, comment faire en sorte de ne pas les afficher en production.

Android : La publication d'une application

Abordez la publication d’une application Android sur le Google Play Store. Nettoyez votre code avant la diffusion, gérez les éventuels crashs, récupérez un exécutable signé, etc.

1h04 (13 vidéos)
Aucun commentaire n´est disponible actuellement
Logiciel :
Spécial abonnés
Date de parution :6 juin 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !