10
votes

Comment puis-je obtenir logcat sur mon appareil pour montrer les journaux de tous les processus

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>

CODE SNIPPETTES H1>

Manifest h3>
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
}


0 commentaires

3 Réponses :


12
votes

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 . 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.


6 commentaires

@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 .


@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 système , mais c'est tout. Désolé!


@Commonsware: Je l'ai fait, l'application doit être déplacée de / Data / App / à / System / App /



2
votes

Pour lire les journaux d'autres applications Programmatiquement, vous devrez attribuer le même Android: SharedUserID dans tous les fichiers manifest des APKS.


1 commentaires

Townvoted parce que la réponse ne répond pas à la question ( tous les journaux est moins complète que la réponse déjà ancienne, déjà acceptée.



0
votes

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 .


0 commentaires