2012-07-13 9 views
1

Mon scénario est le suivant: J'ai un service distant avec lequel n'importe quelle application peut communiquer via Messenger. Les applications envoient des événements personnalisés que j'ai définis. Chaque événement définit une "action" à effectuer (similaire à Intent d'Android). Pour tester l'envoi et le traitement des événements par le service, je souhaite définir une nouvelle action d'événement (par exemple EventAction.DEBUG), mais je ne souhaite pas que cette action et le code qui la traite soient présents dans la version.Meilleure approche pour activer/désactiver le débogage

C'est ce que je pensais:

  • Utilisez une variable final static boolean pour exécuter du code sous condition. Je n'aime pas ça à cause de la variable codée en dur.
  • Lit l'état de débogage à partir d'un fichier de configuration. C'est lent et aussi le compilateur va générer le code pour traiter les débogages, donc inutile de comparer.
  • Passez l'indicateur de débogage à l'application au démarrage. J'ignore comment faire cela sur Android, ou même si c'est possible. Aussi je pense que cela va aussi faire que le compilateur génère le code de débogage.

Selon vous, quelle est la meilleure approche pour implémenter ce comportement?

Répondre

2

La version ADT d'Android 17 et supérieure inclut déjà une variable BuildConfig.DEBUG qui est définie sur false lors de l'exportation d'un fichier APK signé (pour publication).

4

A final static. ProGuard supprimera le code inutilisé.

En ce qui concerne la valeur d'un fichier de configuration - elle est seulement "inutile" si elle ne peut jamais changer pendant l'exécution, et une comparaison n'est pas si lente, vraiment, par rapport au reste de l'application.