android - 我应该在发布之前从我的代码中删除 e.printStackTrace()

标签 android exception logging production

我正在阅读 Android Publishing 文档,他们说要从我的代码中删除所有 Log 调用。我的代码中有一些对 e.printStackTrace() 的调用,可以作为程序正常运行的一部分打印出来(即,如果文件尚不存在)。

我也应该删除这些调用吗?

最佳答案

无论如何,您都不应该直接使用 e.printStackTrace() - 这样做会将信息发送到 Android 日志,而不会显示它来自哪个应用程序(日志标记)。

正如其他人所提到的,继续捕获有问题的 Exception,但使用 android.util.Log 方法之一进行日志记录。您可以只记录消息,而不记录堆栈跟踪,或者对堆栈跟踪使用详细日志记录:

try {
    Object foo = null;
    foo.toString();
} catch (NullPointerException ex) {
    Log.w(LOG_TAG, "Foo didn't work: "+ ex.getMessage());
    Log.d(LOG_TAG, Util.stackTraceWriter(ex));
}

您应该从生产版本中去除 DEBUGVERBOSE 日志消息。最简单的方法是use ProGuard to remove Log.[dv] calls来自您的代码。

关于android - 我应该在发布之前从我的代码中删除 e.printStackTrace(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072148/

相关文章:

android - 工具 :text and android:text in android 之间有什么区别

Java 空指针

java - 如何更新 Logback 中 SMTPAppender 上的 "to"地址?

javascript - 使用 navigator.getUserMedia (Javascript) 访问移动麦克风

android - Cordova/PhoneGap 构建错误

java - 尝试将 editText 输出到 shareIntent

Java在句子后添加换行符(为什么要双换行符来解决它)?

Java 迭代器移除异常契约

java - 如何公开 JBoss AS 7 服务器日志,以便它们在网页上可见并可供下载?

java - tmp下的spring boot spring.log