Jak získám crash data z mé aplikace pro Android?

hlasů
676

Jak mohu získat crash data (stack stopy minimálně) z mé aplikace pro Android? Alespoň při práci na svém vlastním zařízení jsou vyvolány pomocí kabelu, ale v ideálním případě z libovolné instance moje aplikace běžící na volné přírodě, takže to můžu zlepšit a dělat to pevnější.

Položena 02/03/2009 v 08:17
zdroj uživatelem
V jiných jazycích...                            


30 odpovědí

hlasů
341

Můžete zkusit na Acra (Application Crash Report pro Android) knihovna:

ACRA je knihovna umožňující Aplikace pro Android, aby se automaticky po jejich zprávy o selhání do GoogleDoc formě. Je to cílené na android vývojáři aplikací, které jim pomohou získat data z jejich aplikací, když se zhroutí nebo se chovat chybně.

Je snadné nainstalovat aplikaci, vysoce konfigurovatelný a nevyžadují hostit skript serveru kdekoli ... zprávy se posílají do Google Doc tabulky!

Odpovězeno 18/05/2010 v 09:52
zdroj uživatelem

hlasů
280

Pro ukázkové aplikace a účely ladění, já používám jednoduché řešení, které mi umožňuje psát StackTrace na SD kartu zařízení a / nebo nahrát na server. Toto řešení bylo inspirováno projektu android-dálkového StackTrace (konkrétně save-to-zařízení a nahrát-server dílů) a myslím, že řeší problém zmínil Soonil. Není to optimální, ale funguje to a můžete jej vylepšit, pokud jej chcete použít v aplikaci výroby. Pokud se rozhodnete nahrát stacktraces na server, můžete použít php skript ( index.php) k jejich zobrazení. Máte-li zájem, můžete najít všechny níže uvedené zdroje - jednu třídu java pro danou aplikaci a dva volitelné php zatímní listy pro server hosting na nahrané stacktraces.

V kontextu (např hlavní činnosti), call

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");
?>
Odpovězeno 16/04/2009 v 09:00
zdroj uživatelem

hlasů
54

Můžete také zkusit BugSense . BugSense shromažďuje a analyzuje všechny dostupné zprávy o selhání a poskytuje smysluplné a vizuálních zpráv. Je to zdarma a je to jen jeden řádek kódu, aby se integrovat.

Prohlášení: Jsem spoluzakladatel

Odpovězeno 08/07/2011 v 11:15
zdroj uživatelem

hlasů
42

V systému Android 2.2 je nyní možné automaticky získat Crash Reports z Android Market aplikací:

Novinkou pro hlášení chyb aplikací pro Android Market umožňuje vývojářům přijímat havárie a zmrazení zprávy od svých uživatelů. Tyto zprávy budou k dispozici, když se přihlásíte do svého účtu vydavatele.

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

Odpovězeno 28/05/2010 v 11:34
zdroj uživatelem

hlasů
24

Je možné zpracovávat tyto výjimky se Thread.setDefaultUncaughtExceptionHandler()však toto vypadá, že si s Android metodou výjimek manipulaci. Pokusil jsem se použít handler této povahy:

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");
    }
}

Nicméně, dokonce s Opětné vyvolání výjimky, jsem nebyl schopen získat požadované chování, tj přihlášením výjimku zároveň umožňuje Android vypnout komponentu Stalo se to, tak jsem to vzdal na něj po chvíli.

Odpovězeno 18/03/2009 v 18:24
zdroj uživatelem

hlasů
18

Vidím, že tato otázka je příliš starý, a doufám, že moje odpověď je užitečné pro ostatní, kteří mají stejný problém ...

Dej Crashlytics zkusit. Dá hloubkové nahlédnout do všech dopravních nehod na všech zařízeních, které mají svou přihlášku a zaslat upozornění na vás přes email..And nejlepší část je jeho zcela zdarma k použití ..

Odpovězeno 27/06/2013 v 07:07
zdroj uživatelem

hlasů
18

Byl jsem pomocí Crittercism pro mé Android a iOS - slyšel o nich TechCrunch. Docela spokojený s nimi tak daleko!

Odpovězeno 03/10/2011 v 01:13
zdroj uživatelem

hlasů
18

Ok, dobře jsem se podíval na poskytnuté vzorky z rrainn a Soonil, a našel jsem řešení, které nemá zkazit zpracování chyb.

jsem upravil CustomExceptionHandler tak uloží původní UncaughtExceptionHandler z Thread můžeme přiřadit novou. Na konci nového „uncaughtException“ - Metoda I stačí zavolat na staré funkce pomocí uložené UncaughtExceptionHandler.

Ve třídě DefaultExceptionHandler budete potřebovat tá. takhle:

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();
  }
}

S touto úpravou o kodexu při http://code.google.com/p/android-remote-stacktrace máte dobrý pracovní základ pro přihlášení do pole na server nebo na SD kartě.

Odpovězeno 13/05/2009 v 22:51
zdroj uživatelem

hlasů
17

Google Play Developers Console vám vlastně dává stoh stopy z těch aplikací, které havarovaných a poslali zprávy, ale má také velmi dobré grafy, které vám pomohou zobrazit informace, viz příklad níže:

zadejte popis obrázku zde

Odpovězeno 07/05/2015 v 14:11
zdroj uživatelem

hlasů
13

I udělal můj vlastní verzi zde: http://androidblogger.blogspot.com/2009/12/how-to-improve-your-application-crash.html

Je to v podstatě totéž, ale já jsem s použitím email spíše než http Connexion poslat zprávu, a co je ještě důležitější, přidal jsem nějaké informace jako verzi aplikace, verzi operačního systému, modelu telefonu nebo k dostání paměti do své zprávy .. ,

Odpovězeno 15/12/2009 v 01:25
zdroj uživatelem

hlasů
11

toto oprávnění použít k zachytit podrobnosti o výjimce:

String stackTrace = Log.getStackTraceString(exception); 

ukládat na tuto databázi a zachovat protokol.

Odpovězeno 30/04/2012 v 08:31
zdroj uživatelem

hlasů
8

Můžete také použít celou (jednoduché) službu pro něj spíše než jen knihovny. Naše společnost právě vydala službu právě za to: http://apphance.com .

To má jednoduchý JAR knihovny (pro Android), které můžete přidat a začlenit do 5 minut a pak se knihovna shromažďuje nejen crash informace, ale také zaznamená spuštění aplikace, stejně jako to umožňuje testeři nahlásit problém přímo z přístroje - včetně celý kontext (rotace zařízení, ať už je připojen k wifi či nikoliv, a další). Můžete se podívat na protokolech s využitím velmi pěkné a užitečné webové panel, kde můžete sledovat relace s aplikací, pády, záznamu, statistik a další. Tato služba je v uzavřené beta testovací fázi teď, ale můžete požádat o přístup a my to velmi rychle dám.

Prohlášení: Jsem CTO Polidea a spolutvůrcem služby.

Odpovězeno 29/05/2011 v 19:03
zdroj uživatelem

hlasů
6

Díky prostředky prezentovat Stackoverflowv pomoci mi najít tuto odpověď.

Můžete najít své vzdáleně Android zprávy o selhání přímo do vašeho e-mailu . remmember musíte dát svůj e-mail uvnitř třídy CustomExceptionHandler .

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

požadované kroky:

1.) v onCreate své činnosti používat tuto část kódu.

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

2.) používat tuto Potlačené verzi CustomExceptionHandler třídy (rrainn), podle mého 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();

    }
}
Odpovězeno 18/11/2014 v 06:40
zdroj uživatelem

hlasů
5

Google firebase je Google nejnovější (2016) způsob, jak se vám s údaji crash / chyba v telefonu. Zahrnout ji do svého build.gradle souboru:

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

Smrtelných nehod jsou automaticky zaznamenány bez nutnosti vstupu uživatele a také můžete přihlásit bez smrtelných nehod nebo jiných událostí, jako tak:

try
{

}
catch(Exception ex)
{
    FirebaseCrash.report(new Exception(ex.toString()));
}
Odpovězeno 02/08/2016 v 07:47
zdroj uživatelem

hlasů
5

K dispozici je nástroj s názvem tkanina je to crash analytický nástroj, který vám umožní získat zprávy o selhání, při nasazení aplikace živě a během vývoje. Přidání tento nástroj k vaší žádosti bylo jednoduché, stejně .. Když aplikace havárie, která hlásí srážky lze sledovat ze svého fabric.io palubní desky. Zpráva THW se zachytil automatically.it nebude ptát uživatele o povolení. Zda on / ona chce poslat zprávu o chybu / crash. A to je zcela zdarma ... https://get.fabric.io/

Odpovězeno 13/02/2016 v 01:58
zdroj uživatelem

hlasů
5

To je velmi brutální, ale je možné spustit logcat kdekoliv, takže rychlý a špinavý hack je přidat do jakéhokoli bloku catch getRuntime().exec("logcat >> /sdcard/logcat.log");

Odpovězeno 14/04/2011 v 03:36
zdroj uživatelem

hlasů
4

Využíváme naše podomácku systém uvnitř společnosti a to nám velmi dobře poslouží. Je to android knihovna, která posílat zprávy o selhání serveru a serveru, který přijímá zprávy a dělá nějaké analytiku. Server skupiny výjimky podle názvu výjimek, StackTrace, zprávy. To pomáhá identifikovat nejdůležitější problémy, které je třeba opravit. Naše služba je ve veřejném beta teď takže si každý může vyzkoušet. Můžete si vytvořit účet na http://watchcat.co nebo můžete prostě se podívat, jak to funguje pomocí demo přístup http://watchcat.co/reports/index.php?demo .

Odpovězeno 05/03/2013 v 11:29
zdroj uživatelem

hlasů
3

Zatímco mnoho z odpovědí na této stránce jsou užitečné, je to pro ně snadné, aby se stal zastaralý. Tyto AppBrain website statistics agregáty, které vám umožní najít nejvíce populární řešení pro vytváření zpráv havárie, která je aktuální:

Android knihovny zpravodajská crash

app webové stránky mozek

Můžete vidět, že v době vysílání tento obrázek, Crashlytics se používá v 5.24% aplikací a 12,38% všech instalací.

Odpovězeno 26/06/2017 v 21:40
zdroj uživatelem

hlasů
3

Našel jsem ještě jednu velkou webovou aplikaci pro sledování zpráv o chybách.

https://mint.splunk.com/

Malý počet kroků konfigurovat.

  1. Přihlásit nebo zaregistrovat a konfigurovat pomocí výše uvedeného odkazu. Poté, co jste udělal vytvářet aplikace, které budou poskytovat linku pro konfiguraci podobné níže.
Mint.initAndStartSession(YourActivity.this, "api_key");
  1. Přidejte následující build.gradl aplikace.
android {
...
    repositories {
        maven { url "https://mint.splunk.com/gradle/"}
    }
...
}

dependencies {
...
    compile "com.splunk.mint:mint:4.4.0"
...
}
  1. Přidejte kód, který jsme zkopírovali výše a přidejte ho do každé aktivitě.

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

A je to. Přihlášení a přejít do vás aplikace přístrojové desce, budete mít všechny chybové zprávy o.

Doufám, že to někomu pomůže.

Odpovězeno 03/02/2016 v 12:18
zdroj uživatelem

hlasů
2

Tam je to android knihovna s názvem Sherlock . To vám dává úplnou zprávu o nehodě spolu s přístrojem a informace aplikace. Kdykoli dojde k chybě, zobrazí se upozornění v oznamovací liště a cvakání oznámení, otevře podrobnosti o selhání. Můžete také sdílet crash detaily s ostatními prostřednictvím e-mailu nebo jiných možností sdílení.

Instalace

android {
    dataBinding {
      enabled = true
    }
}

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

demonstrace

zadejte popis obrázku zde

Odpovězeno 07/05/2017 v 06:46
zdroj uživatelem

hlasů
2

Nyní dny firebase Zprávy o selhání jsou velmi populární a jednodušší použití. Viz následující odkaz pro více informací: firebase Crash Reporting

Doufám, že to pomůže.

Odpovězeno 20/04/2017 v 11:01
zdroj uživatelem

hlasů
2

U alternativního nárazu vykázání / výjimky pro sledování provozu vyzkoušet Raygun.io - to má spoustu pěkného logiky pro práci s Android pády, včetně slušné uživatelské zkušenosti, když jej připojíte k vaší aplikaci (dva řádky kódu v hlavním aktivity a málo linie XML vložené do AndroidManifest).

Když se vaše aplikace dojde k chybě, bude to automaticky chytit trasování zásobníku, údaje o prostředí pro hard / softwaru, informace o uživateli sledování jakékoliv zvyk údaje zadáte atd zaúčtuje ji API asynchronně, takže nedochází k ucpání v UI vlákno, a ukládá ji na disk v případě, že je k dispozici žádná síť.

Disclaimer: Postavil jsem zprostředkovatele Android :)

Odpovězeno 05/11/2013 v 01:50
zdroj uživatelem

hlasů
2

Pokud chcete, odpovědi ihned můžete použít logcat

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

Pokud existuje příliš mnoho nevyžádané ve vašem deníku právě teď, zkuste nejprve vymazáním.

$adb shell logcat -c

Zkuste to znovu logcat běžící aplikaci poté.

Odpovězeno 09/03/2013 v 18:34
zdroj uživatelem

hlasů
1

Jsem jedním ze zakladatelů Bugsnag , které jsme navrhli právě pro tento účel. Bugsnag automaticky zachytí neošetřené výjimky v aplikacích pro Android a posílá je do naší přístrojová deska, kde si můžete stanovit priority oprav a ponořit se do diagnostické informace.

Zde jsou některé důležité věci, které je třeba při výběru nebo vytvoření systému podávání zpráv crash, spolu s některými kousky kódu:

  • Automaticky detekuje neošetřené výjimky ( příklad kódu )
  • Sbírá diagnostické údaje, jako je například využití paměti, informace zařízení, etc ( příklad kódu )
  • Účinně skupiny zhroucení dohromady příčina
  • Umožňuje sledovat akce uživatele vzal před každou havárii pomoci reprodukovat ( příklad kódu )

Pokud chcete vidět některé osvědčené postupy kolem havárie manipulačního / podávání zpráv o Androidu můžete podívat na kompletní zdrojový kód pro Bugsnag je hlášení havárie knihovnu , která je plně open source, klidně roztrhat to od sebe a používat jej ve vašich vlastních aplikacích!

Odpovězeno 22/03/2016 v 20:57
zdroj uživatelem

hlasů
1

Pozdě na večírek, podporuji a věřím, ACRA je tou nejlepší volbou mezi všemi. Jeho snadno nainstalovat a nakonfigurovat. Vytvořil jsem si podrobný návod se vstupy z celého načíst zprávu o havárii pomocí Acra a pošlete to samé moji e-mailovou adresu pomocí MandrillAp.

Odkaz na příspěvek: https://androidician.wordpress.com/2015/03/29/sending-crash-reports-with-acra-over-email-using-mandrill/

Odkaz na ukázkový projekt na GitHub: https://github.com/ayushhgoyal/AcraSample

Odpovězeno 01/04/2015 v 22:17
zdroj uživatelem

hlasů
1

Právě začal používat Acra https://github.com/ACRA/acra pomocí formuláře Google jako backend a je to velmi snadné nastavení a používání, je to výchozí.

ALE Zpráva o odeslání do Formuláře Google se bude zastaralý (odstraněno): https://plus.google.com/118444843928759726538/posts/GTTgsrEQdN6 https://github.com/ACRA/acra/wiki/Notice-on-Google -forma-Spreadsheet-využití

V každém případě je možné definovat vlastní odesílatele https://github.com/ACRA/acra/wiki/AdvancedUsage#wiki-Implementing_your_own_sender můžete zkusit na odesílatele e-mailu např.

S minimálním úsilím je možné posílat zprávy bugsense: http://www.bugsense.com/docs/android#acra

NB bugsense bezplatný účet je omezena na 500 zprávy / měsíc

Odpovězeno 12/02/2013 v 14:46
zdroj uživatelem

hlasů
0

To lze provést přímo v Android Studio. Stačí připojit k telefonu, spustit aplikaci, ať to zhroutí a můžete prohlédnout StackTrace přímo v Android Studio.

Odpovězeno 01/05/2018 v 06:05
zdroj uživatelem

hlasů
0

Google změnil kolik crash zprávy skutečně získat. Dříve jste se dostali pouze manuální nahlášené hlášení o chybách.

Od poslední vývojářské konferenci a introducation o životní funkce systémem Android můžete také získat zprávy o selhání od uživatelů, které umožnily sdílení diagnostických dat.

Uvidíte všechny pády získané z zařízení se systémem Android, jejichž uživatelé přihlásili k automatickému sdílení využití a diagnostických dat. Data jsou k dispozici pro předchozí dva měsíce.

Strojově pády a aplikace nereaguje (ANR) chyby

Odpovězeno 20/06/2017 v 09:35
zdroj uživatelem

hlasů
0

Je-li vaše aplikace byla stažena jinými lidmi a narážející na vzdálených zařízení, možná budete chtít podívat do Android knihovny zpráv o chybách (odkazovaný v tomto SO poštou ). Když je to jen na své vlastní místní zařízení, můžete použít Logcat. Dokonce i když byl přístroj připojen k hostitelskému počítači, kdy došlo k havárii, připojený přístroj a vydáním příkazu adb logcat stáhne celou historii logcat (alespoň do té míry, že je vyrovnávací paměti, která je obvykle loooot dat log , je to prostě není nekonečná). Ještě jednu z těchto možností, odpověď na vaši otázku? Pokud ne můžete se pokusit objasnit, co hledáte trochu více ne?

Odpovězeno 03/11/2011 v 07:28
zdroj uživatelem

hlasů
0

Flurry Analytics vám havárie informací, hardware modelu, Android verze a živé statistiky využití aplikací. V nové SDK se zdá, že poskytují podrobnější informace havárie http://www.flurry.com/flurry-crash-analytics.html .

Odpovězeno 15/02/2011 v 20:03
zdroj uživatelem

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