IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Android et le Pre Processing


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Android et le Pre Processing
    Bonsoir à tous,

    J'ai toujours eu l'habitude d'utiliser le préprocesseur pour les messages de debug. En mode debug, avec le bon "#ifdef DEBUG", j'utilise les logs, et en mode release, sans ce "DEBUG" il n'y a plus de logs.
    Visuellement dans le code normal, rien ne change : on a toujours l'impression d'un appel à une fonction de debug. Soit elle existe réellement avec DEBUG, soit même l'appel à la fonction n'existe pas en release.

    Mais, j'ai l'impression que cela ne fonctionne pas comme cela sous Android. Il est vrai que c'est ma seule expérience applicative de Java, mais je suis un peu surpris tout de même. Comment faire pour supprimer les logs efficacement (comprenez sans perte de temps CPU) en mode release ?

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Java ne supporte pas le preprocessing donc forcément android non plus

    Pour ton besoin il existe plusieurs solutions :

    1- Depuis l'API 17 il existe BuildConfig.DEBUG qui permet de tester si l'appli est en debug ou non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(BuildConfig.DEBUG)
        Log.e("TAG","Errror");
    2- Définir des constantes en fonctions du buildtype depuis gradle :

    Gradle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    android {
        buildTypes {
            debug {
                buildConfigField "boolean", "LOG", "true"
            }
     
            release {
                buildConfigField "boolean", "LOG", "false"
            }
        }
    }
    Reste ensuite à les appeler via : BuildConfig.LOG
    3- Utiliser proguard pour supprimer les appels Log.x . Pas d'exemple car jamais tester mais tu devrais trouver du code sur internet.

    4- Utiliser Timber qui remplace avantageusement la lib de log standard et qui permet (entre autre) des comportements différents en fonction du buildtype

    Si tu es plus à l'aise avec le C/C++ tu peux tout à fait développer via le NDK. C'est clairement moins conviviale et rapide (en temps pas en perf) mais ça peut se faire.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Image processing sous Android
    Par kanaziwok dans le forum Android
    Réponses: 4
    Dernier message: 21/11/2013, 12h59
  2. Réponses: 3
    Dernier message: 12/07/2012, 08h16
  3. Réponses: 0
    Dernier message: 28/04/2010, 18h21
  4. Process.start avec un processus père
    Par DranDane dans le forum C#
    Réponses: 2
    Dernier message: 24/09/2008, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo