Problemy z dostępem do dzienników wiadomości w Jelly Bean za pomocą aLogcat

12

Podsumowanie

Mam problemy z dostępem do komunikatów dziennika K9 za pomocą aLogcat, więcej szczegółów znajdziesz poniżej. Chciałbym wiedzieć:

  • Dlaczego żadne komunikaty dziennika z K9 nie pojawiają się w przeglądarce dziennika aLogcat?
  • Czy ktoś ma jakieś sugestie, w jaki sposób mogę zobaczyć pełny tekst błędów, które występują podczas próby synchronizacji moich folderów K9?
  • Czy w Jelly Bean mogło się coś zmienić, co spowodowało, że rejestrowanie K9 przestało działać?
  • Ponieważ wydaje się, że aLogcat ogólnie pokazuje niewiele wiadomości, czy coś się zmieniło w Jelly Bean, co może oznaczać, że nie jest już w stanie uzyskać dostępu do wszystkich wiadomości?

Szczegół

Ostatnio miałem problemy z połączeniem z K9. Moje foldery nie synchronizują się, a lista folderów kończy się błędami gniazda ( libcore.io.ErrnoException:) lub ssl ( javex.net.ssl.SSLException:) itp., Gdzie powinna być ostatnia sprawdzona godzina . Otrzymuję różne komunikaty w zależności od tego, który problem występuje w danym momencie, ale nie widzę pełnego tekstu komunikatu o błędzie, więc trudno jest zgadnąć, co może być przyczyną.

Myśląc, że pliki dziennika mogą zawierać więcej informacji, postępowałem zgodnie z instrukcjami w temacie Zapisywanie dziennika debugowania , włączyłem logowanie do debugowania w K9, zainstalowałem aLogcat i spróbowałem przejrzeć dzienniki. Niestety, niezależnie od tego, który bufor dziennika wybiorę ( Główny , Zdarzenia lub Radio ), wydaje się, że nie ma wiadomości z K9.

Jeśli dodam sugerowany (k9|AndroidRuntime)filtr wyrażenia regularnego, nie widzę nic w żadnym z dzienników. Jeśli go usunę, to Main zawiera głównie wiadomości na temat śmieci, Zdarzenia wydają się zawierać głównie wiadomości od samego aLogcata i nie widziałem jeszcze dziennika w Radio .

Jeśli robi to jakąkolwiek różnicę, używam Nexusa 7, ale pomyślałem, że rejestrowanie byłoby w standardowej lokalizacji, która nie zmieniałaby się między wersjami Androida.

Mark Booth
źródło

Odpowiedzi:

24

Czy ktoś ma jakieś sugestie, w jaki sposób mogę zobaczyć pełny tekst błędów, które występują podczas próby synchronizacji moich folderów K9?

Wydaje się, że nie ma sposobu, aby zobaczyć te komunikaty dziennika na urządzeniu bez dostępu do konta root , ale jeśli masz dostęp do konta root, istnieje kilka opcji, albo przyznaj wymagane uprawnienia aLogcat, albo rozważ użycie okropnej hack TM do przeglądania je bezpośrednio.

Przeglądaj pliki dziennika na komputerze lub stacji roboczej za pośrednictwem adb

Jeśli możesz podłączyć urządzenie z Androidem do komputera lub stacji roboczej, możesz uzyskać dostęp do dzienników za pomocą adbpolecenia.

Aby to zrobić w systemie Windows, najpierw musisz zainstalować zestaw Android SDK (który będzie wymagał Java SE SDK ) i dodać android-sdk\toolsoraz android-sdk\platform-toolsdo ścieżki systemowej . Następnie włącz debugowanie USB w swoim Nexusie 7, podłącz go przez USB i zainstaluj interfejs Android Composite ADB z android-sdk\extras\google\usb_driver(musiałem zmusić Windows XP, żeby się tutaj pojawił, nie znalazłby sterowników samodzielnie).

Aby uzyskać szczegółowe informacje, jak dostać adbsię i działa bez pełnej Android SDK instalacji, lub na komputerach Mac lub Linux, patrz doskonałą odpowiedź Izzy do Czy istnieje minimalna instalacja ADB?

Następnie możesz otworzyć powłokę (tj. cmdOkno) i uruchomić polecenie:

adb logcat k9:V *:S AndroidRuntime:E
  • Potwierdziłem, że działa to na moim niezrootowanym Nexusie 7.

Przyznaj uprawnienia aLogcat

Jeśli masz dostępREAD_LOGS do konta root , możesz rozważyć przyznanie uprawnienia aLogcat , jak sugeruje ten post aLogcat / CatLog / Lumberjack nie działa? Zrób to ... na forum XDA-Developers :

pm grant <pkg> android.permission.READ_LOGS

Aby udzielić tego uprawnienia alogcatlub alogcat.donate, możesz użyć jednego z następujących poleceń, w zależności od tego, czy korzystasz z wersji darowizny, czy nie:

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

Według jednego z postów na temat deweloperów Androida i biletu przyznanie pozwolenia przetrwa ponowne uruchomienie i aktualizację, ale nie odinstalowanie / ponowne zainstalowanie.

Niestety, ponieważ wymaga to dostępu do konta root, niezależnie od tego, czy uruchomię to na urządzeniu, czy na komputerze (z prefiksem adb shell), po prostu pojawia się błąd:

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • Nie mogę potwierdzić, że to działa, ponieważ mój Nexus 7 nie został zrootowany.

Zastanów się nad użyciem strasznego hacka TM

Jeśli masz dostęp do logcat konta root , możesz rozważyć utworzenie setuid root i uruchomienie logcata z powłoki urządzenia, jak sugerowano w odpowiedzi na moje pytanie Jak mogę uzyskać dostęp do plików dziennika Androida na moim Nexusie 7 bez dostępu roota? pytanie:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • Ponownie nie mogę potwierdzić, że to działa i prawdopodobnie użyłbym tego tylko w ostateczności , biorąc pod uwagę implikacje bezpieczeństwa.

Dlaczego żadne komunikaty dziennika z K9 nie pojawiają się w przeglądarce dziennika aLogcat ?

Czy w Jelly Bean mogło się coś zmienić, co spowodowało, że rejestrowanie K9 przestało działać?

Ponieważ wydaje się, że aLogcat pokazuje niewiele wiadomości , czy coś się zmieniło w Jelly Bean, co może oznaczać, że nie jest on w stanie uzyskać dostępu do wszystkich wiadomości?

Wydaje się, że jest to zmiana w Jelly Bean, która wpływa na wszystkie aplikacje, które mogą próbować odczytać pliki dziennika.

Najwyraźniej zezwolenie READ_LOGS nie jest przyznawane aplikacjom zewnętrznym w Jelly Bean . Ponieważ ten link wydaje się niewiarygodny:

Dzisiaj przetestowałem moją aplikację na najnowszym emulatorze (API 16) przed wypuszczeniem jej do Google Play. Okazało się, że Android odmawia teraz przyznania tego uprawnienia aplikacjom innych firm. To dziwne, ponieważ przejrzałem wszystkie udokumentowane zmiany Jelly Bean i nie mogłem znaleźć niczego, co wspominałoby o zezwoleniu na READ_LOGS.

i później

Poziom ochrony dla READ_LOGS to teraz „podpis | system | rozwój”. Nowa składnia potoku dla protectionLevel jest również nieudokumentowana (patrz http://code.google.com/p/android/issues/detail?id=34785 ).

Podejrzewam, że aLogcat widzi tylko wiadomości generowane przez siebie i jest to vm.

Aby uzyskać więcej informacji, zobacz Odpowiedzi Flow na moje pytanie. Jak aktywny powinienem oczekiwać pliku dziennika systemu Jelly Bean?

Mark Booth
źródło
IIRC adb logcatnadal jest w stanie uzyskać pełny dziennik Androida na Jelly Bean.
Flow
Nie wymaga rootowania, ale musisz włączyć adb na swoim urządzeniu (zwykle w opcjach programisty).
Flow,
@ Flow - potwierdziłem, że mogę wyświetlić dziennik na moim komputerze, korzystając adb logcatz niego, i odpowiednio zaktualizowałem swoją odpowiedź. Nadal frustrujące jest to, że nie mogę znaleźć żadnego sposobu uzyskania dostępu do dzienników bez dostępu użytkownika root z samego urządzenia.
Mark Booth,
Chodzi o to, że zmiana dziennika JB polega na tym, że użytkownik inny niż root nie może uzyskać dostępu do pełnego dziennika systemu.
Flow
@Flow - Tak, a sednem komunikatów dziennika jest to, że możesz ich użyć, aby dowiedzieć się, co się dzieje. JB sprawia, że ​​aplikacja taka jak aLogcat jest dość bezcelowa, ponieważ może teraz uzyskiwać dostęp tylko do komunikatów dziennika, które sama stworzyła!
Mark Booth,
0

Widziałem to zachowanie w K9, kiedy mój serwer pocztowy zaktualizował swoje certyfikaty SSL. Rozwiązaniem było długie naciśnięcie konta, wybranie Account settings -> Fetching mail -> Incoming serveri przewinięcie Nextstron, aby potwierdzić ustawienia, aż pojawi się wyskakujące okienko dotyczące certyfikatu (może się nie pojawić, jeśli wszystko jest w porządku z certyfikatem, mój miał zły vhost). Potwierdź certyfikat i po prostu przejrzyj pozostałe ustawienia, a twoje konto powinno zacząć działać.

onik
źródło
@MarkBooth Być może powinieneś o to zapytać, generalnie wolimy pytania, które nie zakładają rozwiązania.
Mateusz przeczytał
@MatthewRead Muszę się zgodzić z Markiem tutaj: 4 elementy w jego streszczeniu wyraźnie stwierdzają, że chce pomocy w kwestii rejestrowania, a także nie widzę tutaj „problemu XY” (zakładane rozwiązanie). K9 jest wyraźnie tylko przykładem - ale może tytuł pytania powinien zostać dostosowany, aby go podkreślić: „Użycie logcata do ustalenia przyczyny problemów” lepiej pasowałoby (i koncentrowało się);)
Izzy
@MarkBooth Yepp, tnx - teraz znacznie wyraźniejsze. Również tnx za szczegółową odpowiedź! Informuj nas na bieżąco o swoich postępach.
Izzy
Czy powinienem usunąć swoją odpowiedź, ponieważ po wprowadzeniu zmian jest ona całkowicie nie na temat i jest podatna na głosowanie?
onik
To zależy od Ciebie, onik. Jak powiedziałem pierwotnie, doceniam, że poświęciłeś czas na opublikowanie odpowiedzi, ale teraz, gdy zaktualizowałem pytanie, twoja odpowiedź wygląda jeszcze bardziej nie na miejscu. Przypuszczam, że zawsze możesz poczekać i sprawdzić, czy głosowanie spadnie poniżej -3, abyś mógł odebrać odznakę presji rówieśników . * 8 ')
Mark Booth,