我正在开发一个原生 android 应用程序,我也在使用第三方 api。问题是,当我将手机(S3)连接到我的机器并直接在手机上运行应用程序时,它工作正常。但是当我将 APK 复制到 android 手机时,安装 APP 并运行。然后在其中一个 api 调用它崩溃说“不幸的是 AppName 停止工作”。
我找不到任何方法来找出问题所在以及导致应用程序崩溃的原因。
任何人请建议如何找出问题或可能的原因。我正在 Eclipse 中开发。
java.lang.Thread.UncaughtExceptionHandler
您可以通过在您的应用程序中实现来设置自己的日志写入系统。
例如
public class myExceptionHandler implements UncaughtExceptionHandler {
private UncaughtExceptionHandler defaultUEH;
private String localPath;
public myExceptionHandler(String localPath) {
this.localPath = localPath;
this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}
@Override
public void uncaughtException(Thread t, Throwable e) {
final long ts = new Date().getTime();
final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(ts);
final String timestamp = new SimpleDateFormat("HH_mm_ss_SSS")
.format(cal.getTime());
final Writer result = new StringWriter();
final PrintWriter printWriter = new PrintWriter(result);
e.printStackTrace(printWriter);
String stacktrace = result.toString();
printWriter.close();
String filename = "logcat"+timestamp + ".txt";
if (localPath != null) {
writeToFile(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();
}
}
}
从 MainActivity 调用这个处理程序,如下所示:
Thread.setDefaultUncaughtExceptionHandler(new myExceptionHandler("Put your target directory/folder path where you would like to store the log file"));
现在,每当应用程序崩溃时,您将在代码中使用的文件夹中写入一个日志文件。
你为什么不设置一个 5 分钟快速的 BugSense 库和免费帐户并检查你得到的异常?http://www.bugsense.com/
只需将您的设备连接到 PC 并打开 Eclipse 中的 LogCat 窗口。Logcat 消息仍将输出到 LogCat,而无需实际调试您的应用程序。