我的问题很简单。在将我的应用程序上传到Android市场之前,我应该删除Log.d / e / i / v和e.printStackTrace说明吗?
答案 0 :(得分:4)
如果可能的话,是一个很好的应用程序开发实践,但是e.printStack
的正确处理是必要的,以防止你的应用程序强制关闭不必要的异常。为此,您可以在所有catch块中使用Log.e(TAG, e.toString());
。这将保留有关您的应用程序行为的一些必要信息,您还可以轻松获取有关您的应用程序的任何强制关闭或异常的信息。
答案 1 :(得分:2)
当您对应用程序进行模糊处理时,会自动删除Log.debug指令。见链接:
Android Proguard, removing all Log statements and merging packages
答案 2 :(得分:0)
它确实取决于应用程序上市后的生命周期。
如果您无法信任您的用户提供详细的错误报告(一般来说,与工程相关的应用程序,您可以希望有些用户会有敏锐的提交详细的崩溃报告),那么就没有理由臃肿Android日志。
另一方面,一些错误是 heisenbugs ,并且在添加日志记录语句后可能会消失,这使得它们很难找到。
这真的是一个品味问题 - 我提供了一个构建时间开关,它包含在调试版本中,但不包括在发布版本中。我通常会等到应用程序超过测试版以完全禁用调试日志。
答案 3 :(得分:0)
我不知道你是否必须删除它。 如果我将一个项目上传到市场,我得到了同一个应用程序的2个版本。
删除它们将始终使应用程序更快(非常少)。
答案 4 :(得分:0)
OfCource你应该,特别是如果你的应用程序很大程度上依赖于性能(例如具有快速帧速率的游戏),否则日志的打印会消耗很多性能 执行此操作的正确方法是使用isLoggable之类的标志,如果设置为false则不会打印日志。
答案 5 :(得分:0)
您可以查看here,建议您停用日志记录:
确保停用日志记录并禁用调试选项 在构建应用程序以进行发布之前。你可以停用 通过删除对源文件中的Log方法的调用来进行日志记录。
但是,您应该保留一些日志记录,例如在异常等情况下打印堆栈跟踪,因为如果删除它们,可能会在以后调试可能发生的崩溃时遇到很多麻烦。
答案 6 :(得分:0)
我只是创建自己的Log类并为android.util.Log方法构建包装器方法,在编写日志之前检查BuildConfig.DEBUG
。
答案 7 :(得分:0)
要删除对Log类的调用,请将以下内容添加到proguard-rules文件中:
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}