Laut Google muss ich " alle Aufrufe von Log-Methoden im Quellcode deaktivieren ", bevor ich meine Android-App bei Google Play veröffentliche. Auszug aus Abschnitt 3 der Checkliste für Veröffentlichungen :
Stellen Sie sicher, dass Sie die Protokollierung deaktivieren und die Debugging-Option ausschalten, bevor Sie Ihre Anwendung für die Veröffentlichung erstellen. Sie können die Protokollierung deaktivieren, indem Sie Aufrufe von Log-Methoden in Ihren Quelldateien entfernen.
Mein Open-Source-Projekt ist groß und es ist mühsam, es jedes Mal manuell zu bearbeiten, wenn ich eine neue Version herausbringe. Außerdem ist das Entfernen einer Log-Zeile potenziell schwierig, zum Beispiel:
if(condition)
Log.d(LOG_TAG, "Something");
data.load();
data.show();
Wenn ich die Log-Zeile auskommentiere, gilt die Bedingung für die nächste Zeile, und es besteht die Möglichkeit, dass load() nicht aufgerufen wird. Sind solche Situationen so selten, dass ich entscheiden kann, dass es sie nicht geben sollte?
Gibt es also eine bessere Methode auf Quellcode-Ebene, um das zu tun? Oder vielleicht eine clevere ProGuard-Syntax, um alle Log-Zeilen effizient aber sicher zu entfernen?
2 Stimmen
+1 weil ich mich nicht daran erinnert habe, dass dies in der Checkliste für die Veröffentlichung enthalten ist.
55 Stimmen
Um eine nicht blockierte Zeile auszukommentieren, verwende ich ";//" anstelle von "//".
0 Stimmen
Wenn Sie dies rückgängig machen können müssen, sollten Sie wahrscheinlich
sed 's_^\(\s*Log\.\)_;//'`date|tr -s \ -`'\1_g'
stattdessen.0 Stimmen
Mögliches Duplikat: stackoverflow.com/q/2018263/2291
2 Stimmen
Der Link, den Dimitar hinzugefügt hat, funktioniert nicht mehr. Ich habe stattdessen diesen gefunden source.Android.com/source/code-style.html#log-sparingly .
0 Stimmen
Aus diesem Grund ist es nicht empfehlenswert, if-Anweisungen ohne {} zu verwenden, insbesondere wenn Sie den Ausdruck in die nächste Zeile verschieben; verwenden Sie Sonar Luke.
0 Stimmen
Gibt es irgendwelche Auswirkungen auf die Leistung, wenn die Protokollierung eingeschaltet ist, oder dient dieser Hinweis nur der Sicherheit?
1 Stimmen
@mboy: Wahrscheinlich heutzutage hauptsächlich aus Leistungsgründen, aber auf alten Android-Versionen hat es auch Sicherheitsvorteile.