Problèmes d'accès aux journaux de messages sur Jelly Bean avec aLogcat

12

Sommaire

J'ai eu des problèmes pour accéder aux messages du journal K9 en utilisant aLogcat, voir ci-dessous pour plus de détails. Ce que j'aimerais savoir c'est:

  • Pourquoi aucun message de journal de K9 n'apparaît dans la visionneuse de journaux aLogcat?
  • Quelqu'un a-t-il des suggestions sur la façon dont je peux voir le texte intégral des erreurs qui se produisent lors de la tentative de synchronisation de mes dossiers K9?
  • Est-ce que quelque chose aurait pu changer dans Jelly Bean qui a conduit la journalisation de K9 à cesser de fonctionner?
  • Étant donné qu'il semble y avoir remarquablement peu de messages affichés par aLogcat en général, quelque chose a-t-il changé dans Jelly Bean, ce qui pourrait signifier qu'il n'est plus en mesure d'accéder à tous les messages?

Détail

J'ai récemment eu des problèmes de connexion avec K9. Mes dossiers ne parviennent pas à se synchroniser et la liste des dossiers se termine pleine d'erreurs de socket ( libcore.io.ErrnoException:) ou d'erreurs SSL ( javex.net.ssl.SSLException:), etc. où la dernière heure vérifiée doit être. Je reçois des messages différents selon le problème qui se produit à ce moment-là, mais je ne peux pas voir le texte intégral du message d'erreur, il est donc difficile de deviner quelle pourrait être la cause.

Pensant que les fichiers journaux pourraient contenir plus d'informations, j'ai suivi les instructions de l' enregistrement d'un journal de débogage , activé la journalisation du débogage dans K9, installé aLogcat et essayé de consulter les journaux. Malheureusement, quel que soit le tampon de journal que je sélectionne ( principal , événements ou radio ), il ne semble y avoir aucun message de K9.

Si j'ajoute le (k9|AndroidRuntime)filtre d'expression régulière suggéré, je ne vois rien dans aucun des journaux. Si je le supprime, Main contient principalement des messages de récupération de place, les événements semblent contenir principalement des messages de aLogcat lui-même et je n'ai pas encore vu de message de journal sur Radio .

Si cela fait une différence, j'utilise un Nexus 7, mais j'aurais pensé que la journalisation aurait été à un emplacement standard qui ne changerait pas entre les versions d'Android.

Mark Booth
la source

Réponses:

24

Quelqu'un a-t-il des suggestions sur la façon dont je peux voir le texte intégral des erreurs qui se produisent lors de la tentative de synchronisation de mes dossiers K9?

Il semble qu'il n'y ait aucun moyen de voir ces messages de journal sur l'appareil sans accès root , mais si vous avez un accès root, il existe quelques options, soit accordez les autorisations requises à aLogcat ou envisagez d'utiliser un horrible hack TM pour afficher directement.

Affichez les fichiers journaux sur votre PC ou votre poste de travail via adb

Si vous pouvez connecter votre appareil Android à un PC ou à un poste de travail, vous pouvez accéder aux journaux via la adbcommande.

Pour ce faire sous Windows, vous devez d'abord installer le SDK Android (qui nécessitera le SDK Java SE ) et ajouter le android-sdk\toolset android-sdk\platform-toolsau chemin système . Ensuite, activez le débogage USB sur votre Nexus 7, branchez-le via USB et installez l' interface Android Composite ADB à partir de android-sdk\extras\google\usb_driver(j'ai dû forcer Windows XP à regarder ici, il ne trouverait pas les pilotes par lui-même).

Pour plus de détails sur la façon de devenir adbopérationnel sans l'installation complète du SDK Android, ou sur des machines Mac ou Linux, voir l'excellente réponse d'Izzy à Y a-t-il une installation minimale d'ADB?

Ensuite, vous pouvez ouvrir un shell (c'est-à-dire une cmdfenêtre) et exécuter la commande:

adb logcat k9:V *:S AndroidRuntime:E
  • J'ai confirmé que cela fonctionne sur mon Nexus 7 non rooté.

Accorder des autorisations à aLogcat

Si vous avez un accès root , vous pouvez envisager d'accorder l' READ_LOGSautorisation à aLogcat , comme suggéré dans ce post, aLogcat / CatLog / Lumberjack ne fonctionne pas? Faites ceci ... sur le forum des développeurs xda :

pm grant <pkg> android.permission.READ_LOGS

Pour accorder cette autorisation à alogcatou alogcat.donate, vous utiliseriez l'une des commandes suivantes, selon que vous exécutez la version de don ou non:

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

Selon un article sur les développeurs Android et le ticket , la permission accordée survit au redémarrage et à la mise à jour, mais pas à la désinstallation / réinstallation.

Malheureusement, car cela nécessite un accès root, que je l'exécute sur l'appareil ou sur mon PC (préfixé par adb shell), je reçois simplement l'erreur:

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • Je ne peux pas confirmer que cela fonctionne, car mon Nexus 7 n'est pas enraciné.

Pensez à utiliser un horrible hack TM

Si vous avez un accès root , vous pouvez envisager de créer logcat root setuid et d'exécuter logcat à partir du shell de l'appareil, comme suggéré dans cette réponse à mon Comment puis-je accéder aux fichiers journaux Android sur mon Nexus 7 sans accès root? question:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • Encore une fois, je ne peux pas confirmer que cela fonctionne et je ne l'utiliserais probablement qu'en dernier recours , compte tenu des implications en matière de sécurité.

Pourquoi aucun message de journal de K9 n'apparaît dans la visionneuse de journaux aLogcat ?

Est-ce que quelque chose aurait pu changer dans Jelly Bean qui a conduit la journalisation de K9 à cesser de fonctionner?

Étant donné qu'il semble y avoir remarquablement peu de messages affichés par aLogcat en général, quelque chose a-t-il changé dans Jelly Bean, ce qui pourrait signifier qu'il n'est plus en mesure d'accéder à tous les messages?

Cela semble être un changement dans Jelly Bean qui affecte toutes les applications qui peuvent essayer de lire les fichiers journaux.

Apparemment, l' autorisation READ_LOGS n'est pas accordée aux applications tierces dans Jelly Bean . Étant donné que ce lien semble peu fiable:

Aujourd'hui, j'ai testé mon application sur le plus récent émulateur (api 16) avant de la publier sur Google Play. Il s'est avéré qu'Android refuse désormais d'accorder cette autorisation aux applications tierces. C'est bizarre car j'ai parcouru toutes les modifications documentées de Jelly Bean et je n'ai rien trouvé qui mentionne l'autorisation READ_LOGS.

et ensuite

Le niveau de protection pour READ_LOGS est désormais "signature | système | développement". La nouvelle syntaxe de canal pour protectionLevel est également non documentée (voir http://code.google.com/p/android/issues/detail?id=34785 ).

Je soupçonne que aLogcat ne voit que les messages générés par lui-même et c'est vm.

Pour plus d'informations, reportez- vous aux réponses de Flow à ma question. Dans quelle mesure dois-je m'attendre à ce que mon fichier journal système Jelly Bean soit?

Mark Booth
la source
L'IIRC adb logcatest toujours en mesure d'obtenir le journal Android complet sur Jelly Bean.
Flow
Il ne nécessite pas de root, mais vous devez activer adb sur votre appareil (généralement sous les options de développeur).
Flow
@Flow - J'ai maintenant confirmé que je peux afficher le journal sur mon PC à adb logcatpartir de là et j'ai mis à jour ma réponse en conséquence. Il est toujours frustrant que je ne puisse trouver aucun moyen d'accéder aux journaux sans accès root depuis l'appareil lui-même.
Mark Booth
C'est tout le point de la modification du journal JB qu'un utilisateur non root ne peut pas accéder au journal système complet.
Flow
@Flow - Oui, et l'intérêt des messages de journal est que vous pouvez les utiliser pour savoir ce qui se passe. JB rend une application comme aLogcat assez inutile, car elle ne peut désormais accéder qu'aux messages de journal qu'elle a elle-même créés!
Mark Booth
0

J'ai vu ce comportement dans K9 lorsque mon serveur de messagerie a mis à jour ses certificats SSL. Le correctif consistait à appuyer longuement sur le compte, à sélectionner Account settings -> Fetching mail -> Incoming serveret à Nextparcourir les pages pour confirmer vos paramètres jusqu'à ce que vous obteniez la fenêtre contextuelle sur le certificat (cela pourrait ne pas apparaître si tout va bien avec le certificat, le mien avait un mauvais vhost). Confirmez le certificat et passez simplement par le reste des paramètres et votre compte devrait commencer à fonctionner.

onik
la source
@MarkBooth Peut-être auriez-vous dû demander cela, nous préférons généralement les questions qui ne présupposent pas de solution.
Matthew Read
@MatthewRead Je dois être d'accord avec Mark ici: Les 4 éléments de son résumé indiquent explicitement qu'il veut de l'aide pour le problème de journalisation, et je ne vois pas non plus le "problème XY" ici (solution présupposée). K9 n'est clairement que l'exemple - mais peut-être que le titre de la question devrait être ajusté pour le souligner: "Utiliser logcat pour déterminer la cause des problèmes" correspondrait (et se concentrerait) mieux;)
Izzy
@MarkBooth Yepp, tnx - beaucoup plus clair maintenant. Aussi tnx pour la réponse détaillée! Veuillez nous tenir informés de vos progrès.
Izzy
Dois-je supprimer ma réponse, car elle est complètement hors sujet après les modifications et sujette à un vote négatif?
onik
C'est à vous, onik. Comme je l'ai dit à l'origine, j'apprécie que vous preniez le temps de poster une réponse, mais maintenant que j'ai mis à jour la question, votre réponse semble encore plus à sa place. Je suppose que vous pourriez toujours attendre et voir s'il est voté en dessous de -3 afin que vous puissiez récupérer votre badge de pression des pairs . * 8 ')
Mark Booth