Android Supprimer les instructions de journalisation de trace (et autres) au moment de la génération


Exemple

Si vous voulez supprimer les appels à certaines méthodes, en supposant qu'elles soient vides et sans effets secondaires (comme les appeler ne modifie aucune valeur système, argument de référence, statique, etc.), vous pouvez demander à ProGuard de les supprimer. sortie après la construction est terminée.

Par exemple, je trouve cela utile pour supprimer les instructions de journalisation / débogage utiles au débogage, mais il est inutile de générer les chaînes pour la production.

# Remove the debug and verbose level Logging statements.
# That means the code to generate the arguments to these methods will also not be called.
# ONLY WORKS IF -dontoptimize IS _NOT_ USED in any ProGuard configs
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
}

Remarque: Si -dontoptimize est utilisé dans une configuration ProGuard afin de ne pas minimiser / supprimer le code inutilisé, cela ne supprimera pas les instructions. (Mais qui ne voudrait pas supprimer le code inutilisé, non?)

Note 2: cet appel supprime l'appel à enregistrer, mais ne vous protège pas du code. Les chaînes resteront dans l'apk généré. Lire plus dans cet article .