Probleme beim Zugriff auf Nachrichtenprotokolle in Jelly Bean mit aLogcat

12

Zusammenfassung

Ich habe Probleme beim Zugriff auf die K9-Protokollmeldungen mit aLogcat, siehe unten für weitere Details. Was ich gerne wissen würde ist:

  • Warum werden im aLogcat-Protokoll-Viewer keine Protokollmeldungen von K9 angezeigt?
  • Hat jemand Vorschläge, wie ich den vollständigen Text der Fehler sehen kann, die beim Versuch auftreten, meine K9-Ordner zu synchronisieren?
  • Könnte sich an Jelly Bean etwas geändert haben, das dazu führte, dass K9s Protokollierung nicht mehr funktionierte?
  • Hat sich in Jelly Bean etwas geändert, das bedeuten könnte, dass es nicht mehr in der Lage ist, auf alle Nachrichten zuzugreifen?

Detail

Ich habe kürzlich Verbindungsprobleme mit K9 gehabt. Meine Ordner können nicht synchronisiert werden und die libcore.io.ErrnoException:Ordnerliste ist voll mit Socket-Fehlern ( ) oder SSL-Fehlern ( javex.net.ssl.SSLException:) usw., bei denen die letzte überprüfte Zeit sein sollte. Ich erhalte unterschiedliche Meldungen, je nachdem, welches Problem gerade auftritt, kann jedoch nicht den vollständigen Text der Fehlermeldung anzeigen, sodass es schwierig ist, die Ursache zu erraten.

In der Annahme, dass die Protokolldateien weitere Informationen enthalten könnten, befolgte ich die Anweisungen unter Aufzeichnen eines Debug-Protokolls , aktivierte die Debug-Protokollierung in K9, installierte aLogcat und versuchte, die Protokolle zu überprüfen . Unabhängig davon, welchen Protokollpuffer ich auswähle ( Main , Events oder Radio ), scheint es leider keine Meldungen von K9 zu geben.

Wenn ich den vorgeschlagenen (k9|AndroidRuntime)Regex-Filter hinzufüge, wird in keinem der Protokolle etwas angezeigt. Wenn ich es entferne, enthält Main hauptsächlich Garbage Collection-Nachrichten. Events scheinen hauptsächlich Nachrichten von aLogcat selbst zu enthalten, und ich habe noch keine Protokollnachricht in Radio gesehen .

Wenn es einen Unterschied macht, verwende ich ein Nexus 7, aber ich hätte gedacht, dass die Protokollierung an einem Standardspeicherort stattgefunden hätte, der sich zwischen den Android-Versionen nicht ändern würde.

Mark Booth
quelle

Antworten:

24

Hat jemand Vorschläge, wie ich den vollständigen Text der Fehler sehen kann, die beim Versuch auftreten, meine K9-Ordner zu synchronisieren?

Es scheint , dass es keine Möglichkeit gibt , diese Log - Meldungen zu sehen , auf dem Gerät ohne Root - Zugriff , aber wenn Sie Root - Zugriff zu tun haben, gibt es ein paar Optionen, entweder die erforderlichen Berechtigungen erteilen zu aLogCat oder prüfen , eine schreckliche Hack TM Blick sie direkt.

Zeigen Sie die Protokolldateien auf Ihrem PC oder Ihrer Workstation über an adb

Wenn Sie Ihr Android-Gerät an einen PC oder eine Workstation anschließen können, können Sie über den adbBefehl auf die Protokolle zugreifen .

Um dies zu tun auf Windows, zuerst müssen Sie die Installation Android SDK (die das benötigen Java SE SDK ) und fügen Sie den android-sdk\toolsund android-sdk\platform-toolszu dem Systempfad . Aktivieren Sie dann das USB-Debugging auf Ihrem Nexus 7, schließen Sie es über USB an und installieren Sie das Android Composite ADB Interface von android-sdk\extras\google\usb_driver(ich musste Windows XP zwingen, hier nachzuschauen, da es die Treiber nicht alleine findet).

Weitere Informationen zum Starten adbund Ausführen ohne die vollständige Installation des Android SDK oder auf Mac- oder Linux-Computern finden Sie unter Izzys ausgezeichnete Antwort auf " Gibt es eine minimale Installation von ADB?".

Dann können Sie eine Shell (dh ein cmdFenster) öffnen und den Befehl ausführen:

adb logcat k9:V *:S AndroidRuntime:E
  • Ich habe bestätigt, dass dies auf meinem nicht verwurzelten Nexus 7 funktioniert.

Erteilen Sie aLogcat Berechtigungen

Wenn Sie Root-Zugriff haben , können Sie erwägen READ_LOGS, aLogcat die Berechtigung zu erteilen , wie in diesem Beitrag vorgeschlagen. ALogcat / CatLog / Lumberjack funktioniert nicht? Mach das ... im xda-Entwicklerforum :

pm grant <pkg> android.permission.READ_LOGS

Um alogcatoder diese Berechtigung zu erteilen alogcat.donate, verwenden Sie einen der folgenden Befehle, je nachdem, ob Sie die Spendenversion ausführen oder nicht:

pm grant org.jtb.alogcat.donate android.permission.READ_LOGS
pm grant org.jtb.alogcat android.permission.READ_LOGS

Laut einem Beitrag von Android-Entwicklern und dem Ticket überlebt die Erlaubnisgewährung einen Neustart und ein Update, jedoch keine Deinstallation / Neuinstallation.

Da dies leider Root-Zugriff erfordert, adb shellerhalte ich nur den Fehler , egal ob ich dies auf dem Gerät oder auf meinem PC (vorangestellt durch ) ausführe :

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • Ich kann nicht bestätigen, dass dies funktioniert, da mein Nexus 7 nicht gerootet wurde.

Erwägen Sie die Verwendung eines schrecklichen Hack TM

Wenn Sie root-Zugriff haben , können Sie über die Geräte-Shell logcat setuid root einrichten und logcat ausführen, wie in dieser Antwort auf meine Frage vorgeschlagen. Wie kann ich auf Android-Protokolldateien auf meinem Nexus 7 ohne root-Zugriff zugreifen? Frage:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • Auch hier kann ich nicht bestätigen, dass dies funktioniert, und ich würde es angesichts der Sicherheitsrisiken wahrscheinlich nur als letzten Ausweg verwenden .

Warum werden im aLogcat- Protokoll-Viewer keine Protokollmeldungen von K9 angezeigt ?

Könnte sich an Jelly Bean etwas geändert haben, das dazu führte, dass K9s Protokollierung nicht mehr funktionierte?

Da scheint es bemerkenswert wenige Nachrichten gezeigt werden werden aLogCat im Allgemeinen hat , welche sich etwas geändert hat in Jelly Bean könnte bedeuten , dass es nicht mehr in der Lage ist , alle Nachrichten zugreifen?

Dies scheint eine Änderung in Jelly Bean zu sein, die sich auf alle Anwendungen auswirkt, die versuchen, die Protokolldateien zu lesen.

Anscheinend wird die READ_LOGS-Berechtigung nicht für Anwendungen von Drittanbietern in Jelly Bean erteilt . Da dieser Link unzuverlässig zu sein scheint:

Heute habe ich meine Anwendung auf dem neuesten Emulator (API 16) getestet, bevor ich sie für Google Play freigegeben habe. Es stellte sich heraus, dass Android nun die Erteilung dieser Berechtigung für Anwendungen von Drittanbietern verweigert. Das ist komisch, weil ich alle dokumentierten Änderungen von Jelly Bean durchgesehen habe und nichts gefunden habe, das die READ_LOGS-Berechtigung erwähnt.

und später

Die Schutzstufe für READ_LOGS lautet jetzt "Signatur | System | Entwicklung". Die neue Pipe-Syntax für protectionLevel ist ebenfalls nicht dokumentiert (siehe http://code.google.com/p/android/issues/detail?id=34785 ).

Mein Verdacht ist, dass aLogcat nur Nachrichten sieht, die von ihm selbst generiert wurden und es ist vm.

Weitere Informationen finden Sie unter Flow-Antworten auf meine Frage. Wie aktiv sollte ich mit einer Jelly Bean-Systemprotokolldatei rechnen?

Mark Booth
quelle
IIRC kann adb logcatweiterhin das vollständige Android-Log von Jelly Bean abrufen .
Flow
Es ist kein Root erforderlich, aber Sie müssen adb auf Ihrem Gerät aktivieren (normalerweise unter Entwickleroptionen).
Flow
@Flow - Ich habe jetzt bestätigt, dass ich das Protokoll adb logcatvon dort aus auf meinem PC anzeigen und meine Antwort entsprechend aktualisieren kann. Es ist immer noch frustrierend, dass ich ohne Root-Zugriff vom Gerät selbst keine Möglichkeit finde, auf die Protokolle zuzugreifen.
Mark Booth
Es ist der springende Punkt in der JB-Protokolländerung, dass ein Benutzer ohne Rootberechtigung nicht auf das vollständige Systemprotokoll zugreifen kann.
Flow
@Flow - Ja, und der springende Punkt bei Protokollnachrichten ist, dass Sie sie verwenden können, um herauszufinden, was los ist. JB macht eine App wie aLogcat ziemlich sinnlos, da sie nur noch auf selbst erstellte Logmeldungen zugreifen kann!
Mark Booth
0

Ich habe dieses Verhalten in K9 gesehen, als mein Mailserver seine SSL-Zertifikate aktualisiert hat. Der Fix bestand darin, das Konto lange zu drücken, auszuwählen Account settings -> Fetching mail -> Incoming serverund einfach Nextdurch die Seiten zu blättern, um Ihre Einstellungen zu bestätigen, bis Sie das Popup über das Zertifikat erhalten (dies wird möglicherweise nicht angezeigt, wenn mit dem Zertifikat alles in Ordnung ist, meins hatte einen falschen vhost). Bestätigen Sie das Zertifikat und gehen Sie einfach die restlichen Einstellungen durch. Ihr Konto sollte nun funktionieren.

onik
quelle
@MarkBooth Vielleicht hättest du das fragen sollen, wir bevorzugen im Allgemeinen Fragen, die keine Lösung voraussetzen.
Matthew Read
@MatthewRead Ich muss Mark hier zustimmen: Die 4 Punkte in seiner Zusammenfassung geben ausdrücklich an, dass er Hilfe bei der Protokollierung benötigt, und ich sehe hier auch nicht das "XY-Problem" (vorausgesetzte Lösung). K9 ist eindeutig nur das Beispiel - aber vielleicht sollte der Fragentitel angepasst werden, um es zu unterstreichen: "Mit logcat die Ursache von Problemen ermitteln" würde besser passen (und fokussieren);)
Izzy
@MarkBooth Yepp, tnx - jetzt viel klarer. Auch tnx für die ausführliche Antwort! Bitte halten Sie uns über Ihre Fortschritte auf dem Laufenden.
Izzy
Sollte ich meine Antwort löschen, da sie nach den Änderungen nicht mehr zum Thema gehört und zum Abwerten neigt?
Onik
Es liegt an dir, Onik. Wie ich ursprünglich sagte, weiß ich es zu schätzen, dass Sie sich die Zeit nehmen, um eine Antwort zu schreiben, aber jetzt, da ich die Frage aktualisiert habe, sieht Ihre Antwort noch fehl am Platz aus. Ich nehme an, Sie könnten immer abwarten, ob es unter -3 gewählt wird, damit Sie Ihr Peer-Pressure- Badge abholen können. * 8 ')
Mark Booth