web-dev-qa-db-fra.com

Android logcat: envoyer des entrées de journal à partir de l'appareil par courrier électronique

Scénario

J'ai publié une version bêta d'une application Android à quelques amis. Maintenant, je voudrais corriger quelques bugs qui sont survenus pendant la période de test.

J'ai défini un utilitaire de rapports d'incidents tiers, afin que je puisse facilement gérer les plantages d'applications. Cependant, il existe des comportements erronés qui ne provoquent pas de crash. Dans ces cas, j'aimerais inspecter les journaux d'application et voir ce qui ne va pas.

L'application at-elle un moyen d'envoyer ses entrées logcat par courrier électronique?

Des clarifications

  • De nombreuses applications de journalisation ( Android-log-collector , Log Viewer (logcat) ) peuvent inspecter et afficher les entrées logcat. Cependant, ces applications ne peuvent pas accéder aux journaux des autres applications depuis Android 4.1.
  • Cela ne me dérange pas de prendre beaucoup de place dans l'appareil - cette fonctionnalité est réservée aux bêta-testeurs.
  • La solution devrait fonctionner sans root ni aucune autre autorisation spéciale.
25
Adam Matan

Appelez cette méthode dans onDestroy de votre activité principale.

 public void SendLogcatMail(){

    // save logcat in file
    File outputFile = new File(Environment.getExternalStorageDirectory(),
            "logcat.txt");
    try {
        Runtime.getRuntime().exec(
                "logcat -f " + outputFile.getAbsolutePath());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

 //send file using email
 Intent emailIntent = new Intent(Intent.ACTION_SEND);
 // Set type to "email"
 emailIntent.setType("vnd.Android.cursor.dir/email");
 String to[] = {"[email protected]"};
 emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
 // the attachment
 emailIntent .putExtra(Intent.EXTRA_STREAM, outputFile.getAbsolutePath());
 // the mail subject
 emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
 startActivity(Intent.createChooser(emailIntent , "Send email..."));
 }
25
Aniruddh Rathore

On dirait que RemoteLogger est exactement ce dont vous avez besoin

https://github.com/sschendel/RemoteLogger

Capturez la journalisation de débogage dans un fichier que l'utilisateur peut facilement vous envoyer par courrier électronique. Cela a été créé par nécessité pour résoudre un bogue non reproductible signalé par un utilisateur. Pour être clair, la journalisation a été déposée dans une version de l'application publiée pour tester les utilisateurs à résoudre. Supprimé dans le code de production final.

Library fournit des points d'ancrage pour démarrer, arrêter, envoyer et supprimer le fichier journal.

0
Someone Somewhere