0

我正在开发一个原生 android 应用程序,我也在使用第三方 api。问题是,当我将手机(S3)连接到我的机器并直接在手机上运行应用程序时,它工作正常。但是当我将 APK 复制到 android 手机时,安装 APP 并运行。然后在其中一个 api 调用它崩溃说“不幸的是 AppName 停止工作”。

我找不到任何方法来找出问题所在以及导致应用程序崩溃的原因。

任何人请建议如何找出问题或可能的原因。我正在 Eclipse 中开发。

4

3 回答 3

1

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

现在,每当应用程序崩溃时,您将在代码中使用的文件夹中写入一个日志文件。

于 2013-08-10T13:01:13.657 回答
1

你为什么不设置一个 5 分钟快速的 BugSense 库和免费帐户并检查你得到的异常?http://www.bugsense.com/

于 2013-08-10T12:31:22.683 回答
0

只需将您的设备连接到 PC 并打开 Eclipse 中的 LogCat 窗口。Logcat 消息仍将输出到 LogCat,而无需实际调试您的应用程序。

于 2013-08-10T13:24:03.820 回答