Je suis un développeur Android, je développe des applications pour les clients. Toutefois, dans les périphériques clients, un problème de blocage d'application s'est généralement produit. Mais ce n'est pas arrivé dans mon appareil. Mais je ne peux pas atteindre mon client, alors, voici la question: ~~~~ Y at-il un plugin ou des outils qui peuvent implémenter dans mes applications Android, donc quand les applications sont plantées dans l'appareil de mon client, les journaux de plantage seront envoyés à mon email ou quelque part je peux le vérifier, ainsi je peux le déboguer. S'il vous plaît me conseiller, merciApplications Android Enregistreur - pour testeur
Répondre
Rendez-vous au https://play.google.com/apps/publish/ et publiez votre application. Lorsque les utilisateurs installent votre application et qu'elle plante, elle avertit Google, et lorsque vous vous connecterez à ce panneau de contrôle, vous pourrez trouver ces rapports sous l'onglet "Rapports", puis sous "CRASHES & ANRS".
Essayez de jeter un oeil à Crashlytics: http://try.crashlytics.com/sdk-android/
Je pense que vous devez étendre la classe d'application, et redéfinir Exception poignée avec le code stable (independed de la version Android).
Exemple de code:
YourApplication.java
public class YourApplication extends Application {
@Override
public void onCreate() {
Thread.setDefaultUncaughtExceptionHandler(ExceptionHandler.inContext(getApplicationContext()));
super.onCreate();
}}
ExceptionHandler.java
final public class ExceptionHandler implements Thread.UncaughtExceptionHandler{
private final DateFormat formatter = new SimpleDateFormat("dd.MM.yy HH:mm");
private final DateFormat fileFormatter = new SimpleDateFormat("dd-MM-yy");
private String versionName = "0";
private int versionCode = 0;
private final String stacktraceDir;
private final Thread.UncaughtExceptionHandler previousHandler;
private ExceptionHandler(Context context, boolean chained) {
PackageManager mPackManager = context.getPackageManager();
PackageInfo mPackInfo;
try {
mPackInfo = mPackManager.getPackageInfo(context.getPackageName(), 0);
versionName = mPackInfo.versionName;
versionCode = mPackInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
// ignore
}
if(chained)
previousHandler = Thread.getDefaultUncaughtExceptionHandler();
else
previousHandler = null;
stacktraceDir = String.format("/Android/data/%s/files/", context.getPackageName());
}
static ExceptionHandler inContext(Context context) {
return new ExceptionHandler(context, true);
}
static ExceptionHandler reportOnlyHandler(Context context) {
return new ExceptionHandler(context, false);
}
@Override
public void uncaughtException(Thread thread, Throwable exception) {
final String state = Environment.getExternalStorageState();
final Date dumpDate = new Date(System.currentTimeMillis());
if (Environment.MEDIA_MOUNTED.equals(state)) {
StringBuilder reportBuilder = new StringBuilder();
reportBuilder
.append("\n\n\n")
.append(formatter.format(dumpDate)).append("\n")
.append(String.format("Version: %s (%d)\n", versionName, versionCode))
.append(thread.toString()).append("\n");
processThrowable(exception, reportBuilder);
File sd = Environment.getExternalStorageDirectory();
File stacktrace = new File(
sd.getPath() + stacktraceDir,
String.format(
"stacktrace-%s.txt",
fileFormatter.format(dumpDate)));
File dumpdir = stacktrace.getParentFile();
boolean dirReady = dumpdir.isDirectory() || dumpdir.mkdirs();
if (dirReady) {
FileWriter writer = null;
try {
writer = new FileWriter(stacktrace, true);
writer.write(reportBuilder.toString());
} catch (IOException e) {
// ignore
} finally {
try {
if (writer != null)
writer.close();
} catch (IOException e) {
// ignore
}
}
}
}
if(previousHandler != null)
previousHandler.uncaughtException(thread, exception);
}
private void processThrowable(Throwable exception, StringBuilder builder) {
if(exception == null)
return;
StackTraceElement[] stackTraceElements = exception.getStackTrace();
builder
.append("Exception: ").append(exception.getClass().getName()).append("\n")
.append("Message: ").append(exception.getMessage()).append("\nStacktrace:\n");
for(StackTraceElement element : stackTraceElements) {
builder.append("\t").append(element.toString()).append("\n");
}
processThrowable(exception.getCause(), builder);
}}
Si votre application crased, vous trouverez un journal avec StackTrace à/sdcard/android/data/you.package.name/files/tous les fichiers journaux. Vous pouvez également vérifier les nouveaux fichiers journaux dans ce dossier à chaque démarrage de l'application. Si vous trouvez de nouveaux fichiers, vous pouvez l'envoyer à votre adresse e-mail.
Existe-t-il d'autres outils ou un plugin peut-il faire cela? Parce que mon client est en Chine, il ne peut pas se connecter à google. –
Merci de me répondre de toute façon –
Pas que je sache (il pourrait y avoir!). – alfasin