У меня возникли проблемы с доступом к сообщениям журнала K9 с помощью aLogcat, подробнее см. ниже. Я хотел бы знать следующее:
Недавно у меня были проблемы с подключением к K9. Мои папки не синхронизируются, и список папок заканчивается ошибками сокетов ( libcore.io.ErrnoException:
) или ошибками ssl ( javex.net.ssl.SSLException:
) и т. д., где должно быть время последней проверки . Я получаю разные сообщения в зависимости от того, какая проблема возникает в данный момент, но я не вижу полный текст сообщения об ошибке, поэтому трудно предположить, в чем может быть причина.
Подумав, что лог-файлы могут содержать больше информации, я выполнил инструкции из раздела Запись журнала отладки , включил ведение журнала отладки в K9, установил aLogcat и попытался посмотреть логи. К сожалению, какой бы буфер журнала я ни выбрал ( Main , Events или Radio ), сообщения от K9 отсутствуют.
Если я добавлю предложенный (k9|AndroidRuntime)
фильтр регулярных выражений, я ничего не увижу ни в одном из журналов. Если я удалю его, то Main будет содержать в основном сообщения о сборке мусора, Events , похоже, будут содержать в основном сообщения от самого aLogcat, и я еще не видел сообщения журнала в Radio .
Если это имеет какое-то значение, я использую Nexus 7, но я бы подумал, что ведение журнала будет в стандартном месте, которое не изменится между версиями Android.
Есть ли у кого-нибудь какие-либо предложения относительно того, как я могу увидеть полный текст ошибок, возникающих при попытке синхронизации моих папок K9?
Кажется, что нет возможности увидеть эти сообщения журнала на устройстве без root-доступа , но если у вас есть root-доступ, есть несколько вариантов: либо предоставить необходимые разрешения для 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 Interfaceandroid-sdk\extras\google\usb_driver
(мне пришлось заставить Windows XP посмотреть здесь, она не нашла драйверы сама по себе) .
Подробнее о том, как приступить adb
к работе без полной установки Android SDK или на компьютерах Mac или Linux, см . в превосходном ответе Иззи на вопрос « Есть ли минимальная установка ADB?».
Затем вы можете открыть оболочку (т.е. cmd
окно) и выполнить команду:
adb logcat k9:V *:S AndroidRuntime:E
Если у вас есть 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
Если у вас есть 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?
Я видел такое поведение в K9, когда мой почтовый сервер обновлял сертификаты SSL. Исправление заключалось в том, чтобы долго нажимать на учетную запись, выбирать Account settings -> Fetching mail -> Incoming server
и просто переходить Next
по страницам, чтобы подтвердить свои настройки, пока не появится всплывающее окно с сертификатом (это может не появиться, если с сертификатом все в порядке, у меня был неправильный виртуальный хост). Подтвердите сертификат и просто выполните остальные настройки, и ваша учетная запись должна начать работать.
Поток
adb logcat
по-прежнему может получить полный журнал Android на Jelly Bean.Поток
Марк Бут
adb logcat
оттуда, и соответствующим образом обновил свой ответ. Все еще расстраивает, что я не могу найти способ получить доступ к журналам без рут-доступа с самого устройства.Поток
Марк Бут
HRJ
Иззи
Марк Бут
Иззи
Марк Бут
Царь Иоанн
adb logcat k9:V *:S AndroidRuntime:E
показал мне трассировку утреннего сбоя ночью следующего дня! Лог был еще там!