Ich habe Log.whatever () verwendet, um verschiedene Informationen zu protokollieren, während ich meine Android-App entwickelt habe. Während ich meine App auf dem Android Marketplace veröffentlichen möchte, versuche ich herauszufinden, was ich entfernen muss.
Laut dem Entwicklerhandbuch für Android-Entwickler empfehlen sie vor der Veröffentlichung:
%Vor%Wie deaktiviert die Protokollmethoden? Offensichtlich konnte ich alle durchgehen und sie löschen (was ein bisschen Schmerz ist), aber gibt es eine andere Möglichkeit, Log-Anrufe zu deaktivieren, von denen ich nichts weiß?
Welche Gefahr gibt es auch, Log-Aufrufe in einer veröffentlichten Anwendung zu haben? Kann irgendjemand Eclipse installieren, in sein Telefon pluggen und den Debug-Modus aktivieren und alle LogCat
Informationen sehen, die ich während meiner Entwicklung sehe?
Auch der Dev Guide schlägt vor:
%Vor%Ich war mir dieser Flagge bis jetzt nicht bewusst. Was genau macht es? Ich habe bis jetzt meine App gut entwickelt und debuggen lassen, und diese Flagge wird in meinem Manifest nicht auf wahr oder falsch gesetzt.
Ja, jeder kann das Android SDK (mit oder ohne Eclipse) installieren, um alle Protokollnachrichten auf Ihrem Gerät anzuzeigen.
Ich empfehle nicht, Ihren Protokollierungscode vollständig zu entfernen, sondern ihn stattdessen wie folgt zu umbrechen: if (DEBUG) Log.d(...)
, wobei DEBUG ein statischer boolescher Wert ist, den Sie an einer geeigneten Stelle definieren. Ich bevorzuge es, eine Dienstprogrammklasse zu erstellen, damit alle Protokollaufrufe über verschiedene Klassen gleichzeitig aktiviert / deaktiviert werden können.
Eine gute Vorgehensweise besteht darin, etwas wie if (DEBUG) Log.whatever
zu verwenden und dann einfach DEBUG
false zu machen.
Es besteht keine wirkliche Gefahr, außer dass Sie eine zugrunde liegende Implementierung offenlegen können, die in Ihrer App Pannen und hackbare Punkte aufdeckt. Das eigentliche Problem ist die Leistungseinbuße, die Sie durch zu viel Protokollierung bekommen.
Wie für android:debuggable="true"
suchen Sie in hier nach
Schließlich, ja, Logcat Logs sind global und können von jedem gesehen werden, der das Android SDK verwendet.
Ja Protokolle können von jedem gesehen werden. Nicht nur, dass Apps Protokolle programmgesteuert sammeln können: Ссылка
Stellen Sie also sicher, dass Sie keine sensiblen Daten preisgeben, da viele Apps Protokolle sammeln - meins im Falle von nicht behandelten Ausnahmen / Abstürzen.
Ja, ganz sicher. Jeder kann sie sehen.
Wenn Sie das nicht möchten, löschen Sie sie aus Ihrem Code. Es ist jedoch ganz normal. Ich sehe viele Apps, die Protokolle verwenden, und die Wahrscheinlichkeit ist groß, dass fast keiner Ihrer Benutzer das zur Überprüfung Ihrer Protokolle verwendet.
Ich würde empfehlen, Ihre Log-Anweisungen nicht zu verpacken. Abhängig von der Größe Ihrer Anwendung, die eine Weile dauern könnte, wird wahrscheinlich zu einem guten Stück zusätzlichen Code führen und ist nur ein Streit IMHO.
Stattdessen habe ich festgestellt, dass Proguard beim Exportieren einer App automatisch Ihren Code optimiert und Log-Anweisungen entfernt Freigabe, viel einfacher zu sein. Es wird auch bestimmte Bereiche verschleiern, die alle Reverse-Engineer verlangsamen, die versuchen, Ihre App zu zerstören.
Wenn Sie sich für Proguard entscheiden, können Sie in Ihrer proguard-project.txt-Datei Folgendes einfügen, um Protokollanweisungen zu entfernen:
%Vor%