J'essaie d'écrire une application qui lit tous les journaux sur mon appareil. J'ai une architecture client / service, et je vois des messages de journal du client et des processus de service, mais je ne vois aucun message d'aucune autre application sur le téléphone (je vois les autres messages à l'aide du logcat de bureau). Dois-je besoin de root? p>
Runtime.getRuntime().exec("logcat -c").waitFor(); Process process = Runtime.getRuntime().exec("logcat -v long *:*"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); while (true) { String nextLine = reader.readLine(); if (!nextLine.contains("LogWatcher-D")) { Log.w("LogWatcher-D", "See: " + nextLine); } // Process line }
3 Réponses :
sur Android 4.1+, vous ne pouvez accéder que les messages journaux enregistrés par votre processus, à moins que vous ne disposiez de la permission lisez_logs code>. Cette autorisation nécessite soit que votre application soit signée par la même clé de signature qui a signé le micrologiciel du périphérique, ou que votre application est installée sur la partition système. P>
@Hounshell: afaik, non. Cependant, un utilisateur d'un périphérique enraciné peut déplacer votre application sur la partition système, dans laquelle vous pouvez contenir read_logs code>.
@Commonsware: Donc, si vous installez l'application normalement, avec l'autorisation susmentionnée, tout ce que vous pouvez voir est le journal de l'application? (Pas de journal système?)
@Campiador: Correct, sur 4.1 et plus.
@Commonsware: Merci. J'ai accès au noyau de mon appareil via UART. Pouvez-vous s'il vous plaît dites-moi quel dossier bouger mon application? J'ai cherché le net mais n'a pas pu trouver de réponse, parce que je suis une noobie Linux.
@Campiador: Je ne l'ai pas fait personnellement. Je sais que le bon emplacement est sur la partition code> système code>, mais c'est tout. Désolé!
@Commonsware: Je l'ai fait, l'application doit être déplacée de / Data / App / à / System / App /
Pour lire les journaux d'autres applications Programmatiquement, vous devrez attribuer le même Android: SharedUserID dans tous les fichiers manifest des APKS. p>
Townvoted parce que la réponse ne répond pas à la question ( tous les journaux i> est moins complète que la réponse déjà ancienne, déjà acceptée.
Il existe une autre façon d'accéder à tous les journaux pour toutes les applications sans racine. Cela nécessite permettre de déboguer à distance. Jetez un oeil à la source open source Approductive logcat app . P>