Problemi di accesso ai log dei messaggi su Jelly Bean con aLogcat


12

Sommario

Ho avuto problemi di accesso ai messaggi di log di K9 usando aLogcat, vedi sotto per maggiori dettagli. Quello che vorrei sapere è:

  • Perché non vengono visualizzati messaggi di registro da K9 nel visualizzatore registri aLogcat?
  • Qualcuno ha qualche suggerimento su come posso vedere il testo completo degli errori che si verificano quando provo a sincronizzare le mie cartelle K9?
  • Potrebbe essere cambiato qualcosa in Jelly Bean che ha portato la registrazione di K9 a smettere di funzionare?
  • Dato che aLogcat sembrano esserci davvero pochi messaggi mostrati in generale, qualcosa è cambiato in Jelly Bean, il che potrebbe significare che non è più in grado di accedere a tutti i messaggi?

Dettaglio

Recentemente ho avuto problemi di connessione con K9. Le mie cartelle non si sincronizzano e l'elenco delle cartelle finisce pieno di errori socket ( libcore.io.ErrnoException:) o errori ssl ( javex.net.ssl.SSLException:) ecc. Dove dovrebbe essere l' ultimo orario controllato . Ricevo messaggi diversi a seconda del problema che si sta verificando in quel momento, ma non riesco a vedere il testo completo del messaggio di errore, quindi è difficile indovinare quale potrebbe essere la causa.

Pensando che i file di registro potrebbero contenere ulteriori informazioni, ho seguito le istruzioni in Registrazione di un registro di debug , abilitato la registrazione di debug in K9, installato aLogcat e ho provato a esaminare i registri. Purtroppo, qualunque sia il buffer di registro che seleziono ( Principale , Eventi o Radio ), sembra che non ci siano messaggi da K9.

Se aggiungo il (k9|AndroidRuntime)filtro regex suggerito, non vedo nulla in nessuno dei registri. Se lo rimuovo, Main contiene principalmente messaggi di garbage collection, gli eventi sembrano contenere principalmente messaggi di aLogcat stesso e non ho ancora visto un messaggio di log in Radio .

Se fa la differenza, sto usando un Nexus 7, ma avrei pensato che la registrazione sarebbe stata in una posizione standard che non sarebbe cambiata tra le versioni di Android.

Risposte:


24

Qualcuno ha qualche suggerimento su come posso vedere il testo completo degli errori che si verificano quando provo a sincronizzare le mie cartelle K9?

Sembra che non ci sia modo di vedere questi messaggi di log sul dispositivo senza accesso root , ma se si dispone dell'accesso root, ci sono un paio di opzioni, o concedere le autorizzazioni necessarie a aLogcat o considerare l'utilizzo di un orribile hack TM per visualizzare direttamente.

Visualizza i file di registro sul tuo PC o workstation tramite adb

Se riesci a connettere il tuo dispositivo Android a un PC o una workstation, puoi accedere ai registri tramite il adbcomando.

Per fare ciò su Windows, prima devi installare Android SDK (che richiederà Java SE SDK ) e aggiungere android-sdk\toolse android-sdk\platform-toolsal percorso di sistema . Quindi abilita il debug USB sul Nexus 7, collegalo tramite USB e installa l' interfaccia composita Android ADB da android-sdk\extras\google\usb_driver(ho dovuto forzare Windows XP a guardare qui, non avrebbe trovato i driver da solo).

Per i dettagli su come iniziare adba funzionare senza l'installazione completa dell'SDK di Android o su macchine Mac o Linux, vedere l'eccellente risposta di Izzy a Esiste un'installazione minima di ADB?

Quindi puoi aprire una shell (cioè una cmdfinestra) ed eseguire il comando:

adb logcat k9:V *:S AndroidRuntime:E
  • Ho confermato che funziona sul mio Nexus 7 non rootato.

Concedere le autorizzazioni a aLogcat

Se si dispone dell'accesso root , si potrebbe considerare di concedere l' READ_LOGSautorizzazione a aLogcat , come suggerito in questo post aLogcat / CatLog / Lumberjack non funziona? Fallo ... sul forum xda-developers :

pm grant <pkg> android.permission.READ_LOGS

Per concedere questa autorizzazione a alogcato alogcat.donate, utilizzare uno dei seguenti comandi, a seconda che si stia eseguendo o meno la versione donata:

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

Secondo un post su sviluppatori Android e il ticket , la concessione dell'autorizzazione sopravvive al riavvio e all'aggiornamento, ma non alla disinstallazione / reinstallazione.

Purtroppo dal momento che questo richiede l'accesso come root, sia che io lo esegua sul dispositivo o sul mio PC (preceduto da adb shell) ottengo solo l'errore:

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • Non posso confermare che funzioni, dato che il mio Nexus 7 non è stato rootato.

Prendi in considerazione l'uso di un orribile hack TM

Se disponi dell'accesso root , potresti prendere in considerazione la possibilità di creare logcat setuid root ed eseguire logcat dalla shell del dispositivo, come suggerito in questa risposta alla mia Come posso accedere ai file di registro Android sul mio Nexus 7 senza accesso root? domanda:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • Ancora una volta, non posso confermare che funzioni e probabilmente lo userei solo come ultima risorsa , date le implicazioni di sicurezza.

Perché non vengono visualizzati messaggi di registro da K9 nel visualizzatore registri aLogcat ?

Potrebbe essere cambiato qualcosa in Jelly Bean che ha portato la registrazione di K9 a smettere di funzionare?

Dato che aLogcat sembrano esserci pochi messaggi mostrati in generale, qualcosa è cambiato in Jelly Bean, il che potrebbe significare che non è più in grado di accedere a tutti i messaggi?

Questo sembra essere un cambiamento in Jelly Bean che interessa tutte le applicazioni che potrebbero tentare di leggere i file di registro.

A quanto pare l'autorizzazione READ_LOGS non è concessa alle applicazioni di terzi in Jelly Bean . Dal momento che questo link sembra essere inaffidabile:

Oggi ho testato la mia applicazione sul più recente emulatore (api 16) prima di rilasciarla su Google Play. Si è scoperto che Android ora rifiuta di concedere questa autorizzazione alle applicazioni di terze parti. Questo è strano perché ho esaminato tutte le modifiche documentate di Jelly Bean e non sono riuscito a trovare nulla che menzioni l'autorizzazione READ_LOGS.

e più tardi

ProtectionLevel per READ_LOGS ora è "firma | sistema | sviluppo". Anche la nuova sintassi della pipe per protectionLevel non è documentata (vedi http://code.google.com/p/android/issues/detail?id=34785 ).

Il mio sospetto è che aLogcat stia vedendo solo i messaggi generati da solo ed è vm.

Per ulteriori informazioni, vedere Flow risponde alla mia domanda Quanto devo aspettarmi che sia attivo il mio file di registro del sistema Jelly Bean?


IIRC adb logcatè ancora in grado di ottenere il registro Android completo su Jelly Bean.
Flusso

Non richiede root ma devi abilitare adb sul tuo dispositivo (di solito nelle opzioni sviluppatore).
Flusso

@Flow - Ora ho confermato che posso visualizzare il registro sul mio PC utilizzando adb logcatda lì e ho aggiornato la mia risposta di conseguenza. È ancora frustrante che non riesco a trovare alcun modo per accedere ai registri senza accesso root dal dispositivo stesso.
Mark Booth,

È l'intero punto della modifica del registro JB che un utente non root non può accedere al registro di sistema completo.
Flusso

@Flow - Sì, e l'intero punto dei messaggi di log è che puoi usarli per scoprire cosa sta succedendo. JB rende un'app come aLogcat piuttosto inutile, poiché ora può accedere solo ai messaggi di registro che si è creata da sola!
Mark Booth,

0

Ho visto questo comportamento in K9 quando il mio server di posta ha aggiornato i certificati SSL. La correzione consisteva nel premere a lungo l'account, selezionare Account settings -> Fetching mail -> Incoming servere semplicemente Nextscorrere le pagine per confermare le impostazioni fino a quando non si ottiene il popup sul certificato (questo potrebbe non apparire se tutto è corretto con il certificato, il mio aveva un vhost sbagliato). Conferma il certificato e passa attraverso il resto delle impostazioni e il tuo account dovrebbe iniziare a funzionare.


@MarkBooth Forse avresti dovuto chiedertelo, generalmente preferiamo domande che non presuppongono una soluzione.
Matteo Leggi il

@MatthewRead Devo essere d'accordo con Mark qui: i 4 elementi nel suo riepilogo affermano esplicitamente che desidera un aiuto con il problema di registrazione e inoltre non vedo qui il "problema XY" (soluzione presupposta). K9 è chiaramente solo l'esempio, ma forse il titolo della domanda dovrebbe essere modificato per sottolinearlo: "L'uso di logcat per determinare la causa dei problemi" corrisponderebbe (e si focalizzerebbe) meglio;)
Izzy

@MarkBooth Yepp, tnx - ora molto più chiaro. Anche per la risposta dettagliata! Tienici aggiornati sui tuoi progressi.
Izzy

Devo eliminare la mia risposta, dal momento che è completamente fuori tema dopo le modifiche e soggetta a downgrade?
onik,

Dipende da te, Onik. Come ho detto in origine, apprezzo che tu abbia dedicato del tempo a pubblicare una risposta, ma ora che ho aggiornato la domanda la tua risposta sembra ancora più fuori posto. Suppongo che potresti sempre aspettare e vedere se viene votato al di sotto di -3 in modo da poter raccogliere il tuo badge di pressione pari . * 8 ')
Mark Booth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.