Проблемы с доступом к журналам сообщений на Jelly Bean с помощью aLogcat


12

Резюме

У меня возникли проблемы с доступом к сообщениям журнала K9 с помощью aLogcat, подробнее см. Ниже. То, что я хотел бы знать, это:

  • Почему сообщения журнала K9 не отображаются в программе просмотра журнала aLogcat?
  • Кто-нибудь есть какие-либо предложения относительно того, как я могу увидеть полный текст ошибок, возникающих при попытке синхронизации моих папок K9?
  • Могло ли что-то измениться в Jelly Bean, что привело к прекращению работы лесозаготовок K9?
  • Поскольку, по-видимому, aLogcat в целом замечательно показывает мало сообщений, изменилось ли что-то в Jelly Bean, что может означать, что он больше не может получить доступ ко всем сообщениям?

подробность

У меня недавно были проблемы с подключением к K9. Мои папки не синхронизируются, и список папок заканчивается полными ошибками сокетов ( libcore.io.ErrnoException:) или ошибками ssl ( javex.net.ssl.SSLException:) и т. Д., Где должно быть время последней проверки . Я получаю разные сообщения в зависимости от того, какая проблема возникает в данный момент, но я не вижу полный текст сообщения об ошибке, поэтому трудно догадаться, в чем причина.

Думая, что файлы журнала могут содержать больше информации, я следовал инструкциям в разделе Запись журнала отладки , включил ведение журнала отладки в K9, установил aLogcat и попытался просмотреть журналы. К сожалению, какой бы ни был буфер журнала, который я выбрал ( Основной , События или Радио ), кажется, что нет никаких сообщений от K9.

Если я добавлю предложенный (k9|AndroidRuntime)фильтр регулярных выражений, я ничего не увижу ни в одном журнале. Если я удаляю его, то Main содержит в основном сообщения о сборке мусора, а Events, кажется, содержит в основном сообщения от самого aLogcat, и я еще не видел сообщения журнала в Radio .

Если это имеет какое-то значение, я использую Nexus 7, но я бы подумал, что регистрация была бы в стандартном месте, которое не изменилось бы между версиями Android.

Ответы:


24

Кто-нибудь есть какие-либо предложения относительно того, как я могу увидеть полный текст ошибок, возникающих при попытке синхронизации моих папок K9?

Кажется , что нет никакого способа , чтобы увидеть эти сообщения журнала на устройстве без корневого доступа , но если у вас есть корневой доступ, есть несколько вариантов, либо предоставить необходимые разрешения на aLogcat или рассмотреть возможность использования ужасного хака TM для зрения их напрямую.

Просмотр файлов журнала на вашем ПК или рабочей станции через adb

Если вы можете подключить ваше устройство Android к ПК или рабочей станции, то вы можете получить доступ к журналам с помощью adbкоманды.

Для того, чтобы сделать это на Windows, сначала вам нужно будет установить Android SDK (который потребует Java SE SDK ) и добавить android-sdk\toolsи android-sdk\platform-toolsк системному пути . Затем включите отладку по USB на Nexus 7, подключите его через USB и установите интерфейс Android Composite ADB из android-sdk\extras\google\usb_driver(мне пришлось заставить Windows XP искать здесь, драйверы не найдутся сами по себе).

Более подробную информацию о том , как получить adbи работает без полного Android SDK установки, или на компьютерах Mac или Linux, см отличным ответом Иззи к Существует ли минимальная установка АБР?

Затем вы можете открыть оболочку (то есть cmdокно) и запустить команду:

adb logcat k9:V *:S AndroidRuntime:E
  • Я подтвердил, что это работает на моем некорневом Nexus 7.

Предоставить разрешения aLogcat

Если у вас есть root-доступ , вы можете рассмотреть вопрос о предоставлении READ_LOGSразрешения aLogcat , как предложено в этом посте aLogcat / CatLog / Lumberjack не работает? Сделайте это ... на форуме xda-developers :

pm grant <pkg> android.permission.READ_LOGS

Чтобы предоставить это разрешение alogcatили alogcat.donate, вы можете использовать одну из следующих команд, в зависимости от того, используете ли вы версию для доната:

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

Согласно одному сообщению на android-developers и заявке , разрешение разрешается после перезагрузки и обновления, но не при удалении / переустановке.

К сожалению, поскольку для этого требуется доступ с правами root, независимо от того, запускаю ли я это на устройстве или на своем компьютере (с префиксом adb shell), я просто получаю сообщение об ошибке:

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • Я не могу подтвердить, что это работает, так как мой Nexus 7 не был рутирован.

Подумайте об использовании ужасного хака ТМ

Если у вас есть root-доступ , вы можете рассмотреть возможность создания logcat setuid root и запуска logcat из оболочки устройства, как предлагается в этом ответе на мой вопрос « Как получить доступ к файлам журнала Android на Nexus 7 без root-доступа? вопрос:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • Опять же, я не могу подтвердить, что это работает, и я бы, вероятно, использовал это только в качестве крайней меры , учитывая последствия для безопасности.

Почему сообщения журнала K9 не отображаются в программе просмотра журнала aLogcat ?

Могло ли что-то измениться в Jelly Bean, что привело к прекращению работы лесозаготовок K9?

Поскольку, по-видимому, aLogcat в целом замечательно показывает мало сообщений, изменилось ли что-то в Jelly Bean, что может означать, что он больше не может получить доступ ко всем сообщениям?

Похоже, это изменение в Jelly Bean, которое затрагивает все приложения, которые могут пытаться читать файлы журнала.

Очевидно, что разрешение READ_LOGS не предоставляется сторонним приложениям в Jelly Bean . Так как эта ссылка кажется ненадежной:

Сегодня я протестировал свое приложение на новейшем (api 16) эмуляторе, прежде чем выпустить его в Google Play. Оказалось, что Android сейчас отказывается предоставить это разрешение сторонним приложениям. Это странно, потому что я просмотрел все задокументированные изменения Jelly Bean и не смог найти ничего, что упоминало бы разрешение READ_LOGS.

и позже

Уровень защиты для READ_LOGS теперь «подпись | система | разработка». Новый синтаксис канала для ProtectionLevel также недокументирован (см. Http://code.google.com/p/android/issues/detail?id=34785 ).

Я подозреваю, что aLogcat видит только сообщения, сгенерированные самим собой, и это vm.

Для получения дополнительной информации см. Ответ Flow на мой вопрос. Насколько активным должен быть файл системного журнала Jelly Bean?


IIRC adb logcatвсе еще может получить полный журнал Android на Jelly Bean.
Поток

Для этого не требуется root, но вам нужно включить adb на вашем устройстве (обычно в настройках разработчика).
Поток

@Flow - теперь я подтвердил, что могу просматривать журнал на моем компьютере, используя adb logcatоттуда, и соответственно обновил свой ответ. Все еще расстраивает то, что я не могу найти какой-либо способ доступа к журналам без корневого доступа с самого устройства.
Марк Бут

Весь смысл изменения журнала JB заключается в том, что пользователь без полномочий root не может получить доступ ко всему системному журналу.
Поток

@Flow - Да, и весь смысл сообщений журнала в том, что вы можете использовать их, чтобы узнать, что происходит. JB делает приложение наподобие aLogcat довольно бессмысленным, поскольку теперь оно может получать доступ только к тем сообщениям журнала, которые создал сам!
Марк Бут

0

Я видел такое поведение в K9, когда мой почтовый сервер обновил свои сертификаты SSL. Исправление состояло в том, чтобы долго нажимать на учетную запись, выбирать Account settings -> Fetching mail -> Incoming serverи просто Nextпролистывать страницы, чтобы подтвердить свои настройки, пока вы не получите всплывающее окно с сертификатом (это может не отображаться, если с сертификатом все в порядке, у моего был неправильный vhost). Подтвердите сертификат и просто пройдите остальные настройки, и ваша учетная запись должна начать работать.


@MarkBooth Возможно, вы должны были спросить об этом, мы обычно предпочитаем вопросы, которые не предполагают решения.
Мэтью Прочитано

@MatthewRead Я должен согласиться с Марком здесь: 4 пункта в его резюме явно указывают, что он хочет помочь с проблемой регистрации, и я также не вижу здесь «проблемы XY» (предполагаемое решение). K9 - это просто пример, но, возможно, заголовок вопроса следует изменить, чтобы подчеркнуть его: «Использование logcat для определения причины проблем» будет лучше соответствовать (и фокусироваться);)
Иззи

@MarkBooth Yepp, tnx - теперь намного понятнее. Также tnx за подробный ответ! Пожалуйста, держите нас в курсе о вашем прогрессе.
Иззи

Должен ли я удалить свой ответ, поскольку после внесенных изменений он совершенно не по теме и может быть опущен?
onik

Это зависит от вас, оник. Как я уже сказал, я ценю, что вы нашли время опубликовать ответ, но теперь, когда я обновил вопрос, ваш ответ выглядит еще более неуместным. Я полагаю, вы всегда можете подождать и посмотреть, будет ли проголосовано ниже -3, чтобы вы могли получить свой значок давления со стороны сверстников . * 8 ')
Марк Бут
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.