Как получить краш-данные из моего Android приложения?

голоса
676

Как я могу получить данные о сбоях (стек следы, по крайней мере) из моего Android приложения? По крайней мере, при работе на собственном устройстве для его извлечения кабеля, но в идеале от любого экземпляра мое приложение работает на дикой природе, так что я могу улучшить его и сделать его более прочным.

Задан 02/03/2009 в 08:17
источник пользователем
На других языках...                            


30 ответов

голоса
341

Вы могли бы попробовать Acra (Application Краш Report для Android) библиотеки:

ACRA библиотека позволяет приложение для Android автоматически размещать свои отчеты об ошибках в форме GoogleDoc. Это целенаправленный для разработчиков Android приложений, чтобы помочь им получить данные из своих приложений, когда они терпят крах или ведут себя неправильно.

Это легко установить в вашем приложении, легко настраивается и не требует от вас, чтобы разместить скрипт сервера в любом месте ... отчеты отправляются в таблицу Google Doc!

Ответил 18/05/2010 в 09:52
источник пользователем

голоса
280

Для образцов приложений и целей отладки, я использую простое решение , которое позволяет мне написать StackTrace на сд карту устройства и / или загрузить его на сервер. Это решение было вдохновлено Project андроид-дистанционным StackTrace ( в частности, сохранить-устройство и загружать-сервер части) , и я думаю , что это решает проблему упоминаемого Soonil. Это не является оптимальным, но это работает , и вы можете улучшить его , если вы хотите использовать его в приложении производства. Если вы решили загрузить stacktraces на сервер, вы можете использовать PHP скрипт ( index.php) для их просмотра. Если вы заинтересованы, вы можете найти все ниже источники - один Java - класс для вашего приложения и два дополнительных PHP scrips для сервера , загруженное stacktraces.

В контексте (например, основной деятельности), позвоните по телефону

if(!(Thread.getDefaultUncaughtExceptionHandler() instanceof CustomExceptionHandler)) {
    Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(
            "/sdcard/<desired_local_path>", "http://<desired_url>/upload.php"));
}

CustomExceptionHandler

public class CustomExceptionHandler implements UncaughtExceptionHandler {

    private UncaughtExceptionHandler defaultUEH;

    private String localPath;

    private String url;

    /* 
     * if any of the parameters is null, the respective functionality 
     * will not be used 
     */
    public CustomExceptionHandler(String localPath, String url) {
        this.localPath = localPath;
        this.url = url;
        this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
    }

    public void uncaughtException(Thread t, Throwable e) {
        String timestamp = TimestampFormatter.getInstance().getTimestamp();
        final Writer result = new StringWriter();
        final PrintWriter printWriter = new PrintWriter(result);
        e.printStackTrace(printWriter);
        String stacktrace = result.toString();
        printWriter.close();
        String filename = timestamp + ".stacktrace";

        if (localPath != null) {
            writeToFile(stacktrace, filename);
        }
        if (url != null) {
            sendToServer(stacktrace, filename);
        }

        defaultUEH.uncaughtException(t, e);
    }

    private void writeToFile(String stacktrace, String filename) {
        try {
            BufferedWriter bos = new BufferedWriter(new FileWriter(
                    localPath + "/" + filename));
            bos.write(stacktrace);
            bos.flush();
            bos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void sendToServer(String stacktrace, String filename) {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        nvps.add(new BasicNameValuePair("filename", filename));
        nvps.add(new BasicNameValuePair("stacktrace", stacktrace));
        try {
            httpPost.setEntity(
                    new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
            httpClient.execute(httpPost);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

upload.php

<?php
    $filename = isset($_POST['filename']) ? $_POST['filename'] : "";
    $message = isset($_POST['stacktrace']) ? $_POST['stacktrace'] : "";
    if (!ereg('^[-a-zA-Z0-9_. ]+$', $filename) || $message == ""){
        die("This script is used to log debug data. Please send the "
                . "logging message and a filename as POST variables.");
    }
    file_put_contents($filename, $message . "\n", FILE_APPEND);
?>

index.php

<?php
    $myDirectory = opendir(".");
    while($entryName = readdir($myDirectory)) {
        $dirArray[] = $entryName;
    }
    closedir($myDirectory);
    $indexCount = count($dirArray);
    sort($dirArray);
    print("<TABLE border=1 cellpadding=5 cellspacing=0 \n");
    print("<TR><TH>Filename</TH><TH>Filetype</th><th>Filesize</TH></TR>\n");
    for($index=0; $index < $indexCount; $index++) {
        if ((substr("$dirArray[$index]", 0, 1) != ".") 
                && (strrpos("$dirArray[$index]", ".stacktrace") != false)){ 
            print("<TR><TD>");
            print("<a href=\"$dirArray[$index]\">$dirArray[$index]</a>");
            print("</TD><TD>");
            print(filetype($dirArray[$index]));
            print("</TD><TD>");
            print(filesize($dirArray[$index]));
            print("</TD></TR>\n");
        }
    }
    print("</TABLE>\n");
?>
Ответил 16/04/2009 в 09:00
источник пользователем

голоса
54

Вы также можете попробовать BugSense . BugSense собирает и проанализировал все отчеты об ошибках и дает значимые и визуальные отчеты. Это бесплатно , и это только одна строка кода для интеграции.

Отказ от ответственности: Я соучредитель

Ответил 08/07/2011 в 11:15
источник пользователем

голоса
42

В Android 2.2 теперь можно автоматически получать отчеты о сбоях из Android Market приложений:

Новая функция сообщения об ошибке для Android приложений Market позволяет разработчикам получать аварии и заморозить отчеты своих пользователей. Отчеты будут доступны при входе в свой аккаунт издателя.

http://developer.android.com/sdk/android-2.2-highlights.html

Ответил 28/05/2010 в 11:34
источник пользователем

голоса
24

Можно обрабатывать эти исключения с Thread.setDefaultUncaughtExceptionHandler(), однако это , как представляется , связывайтесь с методом Андроида исключений обработки. Я пытался использовать обработчик такого рода:

private class ExceptionHandler implements Thread.UncaughtExceptionHandler {
    @Override
    public void uncaughtException(Thread thread, Throwable ex){
        Log.e(Constants.TAG, "uncaught_exception_handler: uncaught exception in thread " + thread.getName(), ex);

        //hack to rethrow unchecked exceptions
        if(ex instanceof RuntimeException)
            throw (RuntimeException)ex;
        if(ex instanceof Error)
            throw (Error)ex;

        //this should really never happen
        Log.e(Constants.TAG, "uncaught_exception handler: unable to rethrow checked exception");
    }
}

Тем не менее, даже с Повторным выбрасыванием исключения, я не смог получить желаемое поведение, то есть при входе исключения в то же время позволяя Android для завершения работы компоненты это произошло, так что я отказался от него через некоторое время.

Ответил 18/03/2009 в 18:24
источник пользователем

голоса
18

Я вижу, что вопрос слишком стар, и надеюсь, что мой ответ полезным для других, имеющих один и тот же вопрос ...

Дайте Crashlytics попробовать. Это даст представление о углубленное всех аварий на всех устройствах , имеющих приложение и отправить уведомление вам через email..And лучшая часть его совершенно свободно использовать ..

Ответил 27/06/2013 в 07:07
источник пользователем

голоса
18

Я использую Crittercism для моего Android и IOS приложений - слышали о них на TechCrunch. Очень счастлива с ним до сих пор!

Ответил 03/10/2011 в 01:13
источник пользователем

голоса
18

Хорошо, хорошо, я посмотрел на предоставленные образцы из rrainn и Soonil, и я нашел решение, которое не портили обработки ошибок.

Я изменил CustomExceptionHandler так он сохраняет оригинальный UncaughtExceptionHandler от Thread мы связываем новый. В конце нового «uncaughtException» - метод, который я просто называю старую функцию, используя накопленную UncaughtExceptionHandler.

В классе DefaultExceptionHandler вам нужно что-н. как это:

public class DefaultExceptionHandler implements UncaughtExceptionHandler{
  private UncaughtExceptionHandler mDefaultExceptionHandler;

  //constructor
  public DefaultExceptionHandler(UncaughtExceptionHandler pDefaultExceptionHandler)
  {
       mDefaultExceptionHandler= pDefaultExceptionHandler;
  }
  public void uncaughtException(Thread t, Throwable e) {       
        //do some action like writing to file or upload somewhere         

        //call original handler  
        mStandardEH.uncaughtException(t, e);        

        // cleanup, don't know if really required
        t.getThreadGroup().destroy();
  }
}

С учетом этого изменения в коде на http://code.google.com/p/android-remote-stacktrace вы имеете хорошую рабочую базу для входа в поле вашего веб - сервера или SD-карты.

Ответил 13/05/2009 в 22:51
источник пользователем

голоса
17

Google Play Разработчики консоль на самом деле дает вам стек следы от тех приложений, которые разбившиеся и послали доклады, он также очень хорошие диаграммы, чтобы помочь вам увидеть информацию, смотрите пример ниже:

введите описание изображения здесь

Ответил 07/05/2015 в 14:11
источник пользователем

голоса
13

Я сделал свою собственную версию здесь: http://androidblogger.blogspot.com/2009/12/how-to-improve-your-application-crash.html

Это в основном то же самое, но я использую почту, а не HTTP Connexion, чтобы отправить отчет, и, что более важно, я добавил некоторую информацию, как версия приложения, версия ОС, модель телефона, или avalaible память моего докладу .. ,

Ответил 15/12/2009 в 01:25
источник пользователем

голоса
11

использовать это, чтобы поймать сведения об исключении:

String stackTrace = Log.getStackTraceString(exception); 

хранить это в базе данных и вести журнал.

Ответил 30/04/2012 в 08:31
источник пользователем

голоса
8

Вы можете также использовать весь (простой) службы для него , а не только библиотеки. Наша компания выпустила сервис только для этого: http://apphance.com .

Она имеет простой .jar библиотеку (для Android), которые вы добавляете и интегрировать в течение 5 минут, а затем библиотека собирает не только аварии информации, но и регистрирует запуск приложения, а также позволяет вашим тестерам сообщать о проблемах прямо с устройства - в том числе весь контекст (вращение устройства, является ли он подключен к Wi-Fi или нет и больше). Вы можете посмотреть на журналы, используя очень хороший и полезный веб-панель, где вы можете отслеживать сессий с приложением аварий, журналы, статистика и многое другое. Услуга находится в закрытом бета-фазе тестирования в настоящее время, но вы можете запросить доступ и мы его к вам очень быстро.

Отказ от ответственности: Я CTO из Polidea, и один из создателей сервиса.

Ответил 29/05/2011 в 19:03
источник пользователем

голоса
6

Благодарности ресурсы представить в Stackoverflowпомогая мне найти этот ответ.

Вы можете найти свои сообщения удалены Android аварии прямо в вашу электронную почту . remmember вы должны поместить свою электронную почту внутри класса CustomExceptionHandler .

public static String sendErrorLogsTo = "tushar.pandey@virtualxcellence.com" ;

необходимые шаги:

Первый) в OnCreate вашей деятельности, используйте этот раздел кода.

    if(!(Thread.getDefaultUncaughtExceptionHandler() instanceof CustomExceptionHandler)) {
        Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(this));
    }   

Второй) использовать эту перекрытую версию CustomExceptionHandler класса (rrainn), в соответствии с моей phpscript.

package com.vxmobilecomm.activity;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.Thread.UncaughtExceptionHandler;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.AsyncTask;
import android.util.Log;

public class CustomExceptionHandler implements UncaughtExceptionHandler {

    private UncaughtExceptionHandler defaultUEH;
    public static String sendErrorLogsTo = "tushar.pandey@virtualxcellence.com" ;

    Activity activity;

    public CustomExceptionHandler(Activity activity) {
        this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
        this.activity = activity;
    }

    public void uncaughtException(Thread t, Throwable e) {

        final Writer result = new StringWriter();
        final PrintWriter printWriter = new PrintWriter(result);
        e.printStackTrace(printWriter);
        String stacktrace = result.toString();
        printWriter.close();
        String filename = "error" + System.nanoTime() + ".stacktrace";

        Log.e("Hi", "url != null");
        sendToServer(stacktrace, filename);

        StackTraceElement[] arr = e.getStackTrace();
        String report = e.toString() + "\n\n";
        report += "--------- Stack trace ---------\n\n";
        for (int i = 0; i < arr.length; i++) {
            report += "    " + arr[i].toString() + "\n";
        }
        report += "-------------------------------\n\n";

        report += "--------- Cause ---------\n\n";
        Throwable cause = e.getCause();
        if (cause != null) {
            report += cause.toString() + "\n\n";
            arr = cause.getStackTrace();
            for (int i = 0; i < arr.length; i++) {
                report += "    " + arr[i].toString() + "\n";
            }
        }
        report += "-------------------------------\n\n";

        defaultUEH.uncaughtException(t, e);
    }

    private void sendToServer(String stacktrace, String filename) {
        AsyncTaskClass async = new AsyncTaskClass(stacktrace, filename,
                getAppLable(activity));
        async.execute("");
    }

    public String getAppLable(Context pContext) {
        PackageManager lPackageManager = pContext.getPackageManager();
        ApplicationInfo lApplicationInfo = null;
        try {
            lApplicationInfo = lPackageManager.getApplicationInfo(
                    pContext.getApplicationInfo().packageName, 0);
        } catch (final NameNotFoundException e) {
        }
        return (String) (lApplicationInfo != null ? lPackageManager
                .getApplicationLabel(lApplicationInfo) : "Unknown");
    }

    public class AsyncTaskClass extends AsyncTask<String, String, InputStream> {
        InputStream is = null;
        String stacktrace;
        final String filename;
        String applicationName;

        AsyncTaskClass(final String stacktrace, final String filename,
                String applicationName) {
            this.applicationName = applicationName;
            this.stacktrace = stacktrace;
            this.filename = filename;
        }

        @Override
        protected InputStream doInBackground(String... params) 
        { 
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(
                    "http://suo-yang.com/books/sendErrorLog/sendErrorLogs.php?");

            Log.i("Error", stacktrace);

            try {
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                        6);

                nameValuePairs.add(new BasicNameValuePair("data", stacktrace));
                nameValuePairs.add(new BasicNameValuePair("to",sendErrorLogsTo));
                nameValuePairs.add(new BasicNameValuePair("subject",applicationName));

                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                HttpResponse response = httpclient.execute(httppost);

                HttpEntity entity1 = response.getEntity();

                BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(
                        entity1);

                is = bufHttpEntity.getContent();

            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return is;
        }

        @Override
        protected void onPostExecute(InputStream result) {
            super.onPostExecute(result);

            Log.e("Stream Data", getStringFromInputStream(is));
        }
    }

    // convert InputStream to String
    private static String getStringFromInputStream(InputStream is) {

        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();

        String line;
        try {

            br = new BufferedReader(new InputStreamReader(is));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return sb.toString();

    }
}
Ответил 18/11/2014 в 06:40
источник пользователем

голоса
5

Google Firebase является последним (2016) способ Google, чтобы предоставить вам данные аварии / ошибки на телефоне. Включите его в файл build.gradle:

compile 'com.google.firebase:firebase-crash:9.0.0'

Смертельные аварии регистрируются автоматически, не требуя ввод данных пользователя, и вы также можете войти без ДТП со смертельным исходом или другие события, как так:

try
{

}
catch(Exception ex)
{
    FirebaseCrash.report(new Exception(ex.toString()));
}
Ответил 02/08/2016 в 07:47
источник пользователем

голоса
5

Существует инструмент называется ткань, это краш - аналитический инструмент, который позволит вам получить отчеты о сбоях, когда приложение развернуто в прямом эфире и в процессе разработки. Добавление этого инструмента в приложении было просто , как хорошо .. Когда аварию приложения, отчет о сбое можно рассматривать с вашего fabric.io приборной панели. Отчет THW был пойманной automatically.it не запрашивает у пользователя разрешения. Является ли он / она хочет , чтобы отправить отчет об ошибке / аварии. И это совершенно бесплатно ... https://get.fabric.io/

Ответил 13/02/2016 в 01:58
источник пользователем

голоса
5

Это очень грубый, но можно запустить LogCat в любом месте, так что быстрый и грязный хак, чтобы добавить к любому блоку улова getRuntime().exec("logcat >> /sdcard/logcat.log");

Ответил 14/04/2011 в 03:36
источник пользователем

голоса
4

Мы используем систему доморощенных внутри компании , и это служит нам очень хорошо. Это андроид библиотека, отправлять отчеты об ошибках на сервер и сервер , который получает отчеты и делают некоторые аналитики. Группы серверов исключения по имени исключения, StackTrace, сообщение. Это помогает определить наиболее важные вопросы , которые должны быть исправлены. Наш сервис находится в публичных бета - версии в настоящее время , так что каждый может попробовать. Вы можете создать учетную запись на http://watchcat.co или вы можете просто посмотрите , как это работает , используя демо - доступ http://watchcat.co/reports/index.php?demo .

Ответил 05/03/2013 в 11:29
источник пользователем

голоса
3

Хотя многие ответы на этой странице, являются полезными, легко для них, чтобы устареть. Статистика сайта агрегатов AppBrain, которые позволяют найти наиболее популярное решение аварии отчетности, которая является текущей:

библиотеки Android аварии отчетности

сайт мозга приложение

Вы можете видеть, что в момент размещения этой фотографии, Crashlytics используется в 5,24% приложениях и 12.38% от установок.

Ответил 26/06/2017 в 21:40
источник пользователем

голоса
3

Я нашел еще один большой веб-приложение для отслеживания сообщений об ошибках.

https://mint.splunk.com/

Небольшое количество шагов для настройки.

  1. Войти или зарегистрироваться и настроить с помощью приведенной выше ссылке. После того, как вы закончите создание приложения они обеспечат линию для настройки, как показано ниже.
Mint.initAndStartSession(YourActivity.this, "api_key");
  1. Добавьте следующее в build.gradl приложения.
android {
...
    repositories {
        maven { url "https://mint.splunk.com/gradle/"}
    }
...
}

dependencies {
...
    compile "com.splunk.mint:mint:4.4.0"
...
}
  1. Добавьте код, который мы скопировали выше и добавьте его в любой деятельности.

    Mint.initAndStartSession (YourActivity.this, "api_key");

Вот и все. Вы логин и перейти к вам приборной панели приложения, вы получите все отчеты об ошибках.

Надеюсь, что это поможет кому-то.

Ответил 03/02/2016 в 12:18
источник пользователем

голоса
2

Существует эта андроида библиотека называется Шерлок . Это дает вам полный отчет о катастрофе вместе с устройством и прикладной информацией. Всякий раз , когда происходит сбой, он выводит уведомление в строке уведомлений и щелканье уведомления, он открывает подробности аварии. Вы также можете поделиться детали аварии с другими по электронной почте или другие варианты обмена.

Монтаж

android {
    dataBinding {
      enabled = true
    }
}

compile('com.github.ajitsing:sherlock:1.0.0@aar') {
    transitive = true
}

демонстрация

введите описание изображения здесь

Ответил 07/05/2017 в 06:46
источник пользователем

голоса
2

Теперь дни отчеты Firebase Краш очень популярны и проще в использовании. Пожалуйста , обратитесь ссылкой для получения дополнительной информации: Firebase Отчеты о сбоях

Надеюсь, что это поможет.

Ответил 20/04/2017 в 11:01
источник пользователем

голоса
2

Для альтернативной аварии отчетности / исключения службы отслеживания проверить Raygun.io - он получил кучу хорошей логики для обработки Android аварий, в том числе приличного опыта пользователя при подключении его к вашему приложению (две строки коды в основной деятельности и несколько строки XML вставленные в AndroidManifest).

Когда ваши аварии приложения, оно будет автоматически захватывать трассировки стеки, данные среды для жесткого / программного обеспечения, пользователь информацию отслеживания, любые пользовательские данные вы задаете т.д. вывешивают его на API асинхронно, нет блокировки потока пользовательского интерфейса, и кэшируете его на диск, если нет доступной сети.

Отказ от ответственности: я построил Android провайдера :)

Ответил 05/11/2013 в 01:50
источник пользователем

голоса
2

Если вы хотите получить ответы сразу же вы можете использовать LogCat

$adb shell logcat -f /sdcard/logoutput.txt *:E

Если есть слишком много барахла в журнале прямо сейчас, попробуйте очистить его первым.

$adb shell logcat -c

Затем попробуйте запустить приложение затем LogCat снова.

Ответил 09/03/2013 в 18:34
источник пользователем

голоса
1

Я один из основателей Bugsnag , который мы разработали именно для этой цели. Bugsnag автоматически фиксирует необработанные исключения в Android приложениях и отправляет их в нашу приборную панель, где вы можете приоритизации исправления и погружение в диагностическую информацию.

Вот некоторые важные вещи, которые следует учитывать при выборе или создании системы краш отчетности, а также некоторые фрагменты кода:

  • Обнаруживает необработанные исключения автоматически ( пример кода )
  • Сбор диагностических данных , такие как использование памяти, информация устройства, и т.д. ( пример кода )
  • Эффективно группа аварий вместе первопричина
  • Позволяет отслеживать действия пользователя брали перед каждой аварии , чтобы помочь воспроизвести ( пример кода )

Если вы хотите , чтобы увидеть некоторые лучшие практики вокруг аварии обработки / отчетности на Android вы можете проверить полный исходный код для Bugsnag в краш отчетности библиотеки , которая является полностью открытым исходным кодом, не стесняйтесь разорвать это друг от друга и использовать его в своих приложениях!

Ответил 22/03/2016 в 20:57
источник пользователем

голоса
1

Позднее к партии, я поддерживаю и считаю, ACRA является лучшим вариантом среди всех. Его легко установить и настроить. Я создал подробное руководство с входами со всего принести отчет аварии с помощью Acra и отправить то же самое на мой адрес электронной почты, используя MandrillAp.

Ссылка на сообщение: https://androidician.wordpress.com/2015/03/29/sending-crash-reports-with-acra-over-email-using-mandrill/

Ссылка на примере проекта на GitHub: https://github.com/ayushhgoyal/AcraSample

Ответил 01/04/2015 в 22:17
источник пользователем

голоса
1

Просто начать использовать ACRA https://github.com/ACRA/acra с помощью Google Forms в качестве внутреннего интерфейса , и это очень легко установить и использование, это по умолчанию.

НО Отправка отчетов в Google Формы будут осуждаются (удаляет): https://plus.google.com/118444843928759726538/posts/GTTgsrEQdN6 https://github.com/ACRA/acra/wiki/Notice-on-Google -форма-Spreadsheet-использование

Во всяком случае , можно определить собственный отправитель https://github.com/ACRA/acra/wiki/AdvancedUsage#wiki-Implementing_your_own_sender вы можете дать попробовать на адрес электронной почты отправителя, например.

С минимальными усилиями это можно посылать отчеты bugsense: http://www.bugsense.com/docs/android#acra

NB bugsense бесплатный аккаунт ограничен 500 отчет / месяц

Ответил 12/02/2013 в 14:46
источник пользователем

голоса
0

Вы можете сделать это непосредственно в Android Studio. Просто подключите свой телефон, запустите приложение, пусть это крах, и вы можете просматривать StackTrace непосредственно в Android Studio.

Ответил 01/05/2018 в 06:05
источник пользователем

голоса
0

Google изменил сколько краш отчеты вы действительно получите. Ранее вы получили только вручную сообщили об ошибках.

С последней конференции разработчиков и introducation из Android Vitals вы также получаете отчеты о сбоях от пользователей , которые позволили обмениваться данными диагностики.

Вы увидите все аварии, собранные с Android устройств, пользователи предпочли, чтобы автоматически обмениваться использования и диагностики данных. Данные доступны в течение предыдущих двух месяцев.

Просмотр аварий и приложение не отвечает (ANR) ошибки

Ответил 20/06/2017 в 09:35
источник пользователем

голоса
0

Если ваше приложение загружается другими людьми и сбой на удаленных устройствах, вы можете посмотреть в Android библиотеку отчетов об ошибках (ссылка в этом SO пост ). Если это только на собственном локальном устройстве, вы можете использовать LogCat. Даже если устройство не подключено к хост - машине , когда произошла авария, связанная с устройством и выдачи команды ADB LogCat загрузит всю историю LogCat (по крайней мере в той степени , в которой она забуференной , которая обычно loooot из данных журнала , это просто не бесконечно). Выполните одно из этих вариантов ответа на ваш вопрос? Если вы не можете попытаться выяснить , что вы ищете немного больше?

Ответил 03/11/2011 в 07:28
источник пользователем

голоса
0

Шквал аналитика дает аварию информацию, аппаратная модель, Android версии и жить статистику использования приложений. В новом SDK они , кажется , предоставить более подробную информацию аварии http://www.flurry.com/flurry-crash-analytics.html .

Ответил 15/02/2011 в 20:03
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more