Android在上传到市场之前删除Log.d和e.printStackTrace指令

Android在上传到市场之前删除Log.d和e.printStackTrace指令,android,logging,google-play,Android,Logging,Google Play,我的问题很简单。在将我的应用程序上载到Android market之前,我是否应该删除Log.d/e/I/v和e.printStackTrace指令?这实际上取决于应用程序发布到市场后的生命周期 如果你不能信任你的用户提供详细的bug报告,一般来说,通过与工程相关的应用程序,你可以希望一些用户有能力提交详细的崩溃报告,那么没有理由夸大Android日志 另一方面,有些bug是heisenbug,在添加日志语句后可能会消失,这使得它们很难找到 这实际上是一个品味问题——我提供了一个构建时切换,它将

我的问题很简单。在将我的应用程序上载到Android market之前,我是否应该删除Log.d/e/I/v和e.printStackTrace指令?

这实际上取决于应用程序发布到市场后的生命周期

如果你不能信任你的用户提供详细的bug报告,一般来说,通过与工程相关的应用程序,你可以希望一些用户有能力提交详细的崩溃报告,那么没有理由夸大Android日志

另一方面,有些bug是heisenbug,在添加日志语句后可能会消失,这使得它们很难找到


这实际上是一个品味问题——我提供了一个构建时切换,它将它们包含在调试构建中,但不包含在发布构建中。我通常等到应用程序通过测试版后才完全禁用调试日志

这实际上取决于应用程序上市后的生命周期

如果你不能信任你的用户提供详细的bug报告,一般来说,通过与工程相关的应用程序,你可以希望一些用户有能力提交详细的崩溃报告,那么没有理由夸大Android日志

另一方面,有些bug是heisenbug,在添加日志语句后可能会消失,这使得它们很难找到


这实际上是一个品味问题——我提供了一个构建时切换,它将它们包含在调试构建中,但不包含在发布构建中。我通常等到应用程序通过测试版后才完全禁用调试日志

我不知道你是否必须删除它。 如果我把一个项目上传到市场上,我会得到同一个应用程序的两个版本

使用println和日志 没有println和日志
删除它们总是会让应用程序运行得更快一些。

我不知道你是否必须删除它。 如果我把一个项目上传到市场上,我会得到同一个应用程序的两个版本

使用println和日志 没有println和日志
删除它们总是会让应用程序运行得更快一些。如果可能的话,是的,这是一个很好的应用程序开发实践,但是正确处理e.printStack是必要的,以防止应用程序强制关闭而出现不必要的异常。为此,您可以使用Log.eTAG,例如toString;在所有挡块中。这将保留有关应用程序行为的一些必要信息,您还可以轻松获取有关应用程序强制关闭或异常的信息。

如果可能,这是一种良好的应用程序开发实践,但正确地处理e.printStack是必要的,以防止您的应用程序强制关闭不必要的异常。为此,您可以使用Log.eTAG,例如toString;在所有挡块中。这将保留有关应用程序行为的一些必要信息,您还可以轻松获得有关应用程序的任何强制关闭或异常的信息。

当然,您应该这样做,特别是当您的应用程序非常依赖于性能时,例如具有快速帧速率的游戏,否则,打印日志会消耗大量性能
正确的方法是使用类似isLoggable的标志,如果设置为false,它将不会打印日志。

当然,您应该这样做,尤其是当您的应用程序非常依赖于性能时,例如游戏帧速率很快,否则日志的打印会消耗大量性能
正确的方法是使用类似isLoggable的标志,如果设置为false,它将不会打印日志。

Log.debug指令会在您禁用应用程序时自动恢复。见链接:


当您阻塞应用程序时,Log.debug指令会自动被删除。见链接:

您可以看看,他们建议您禁用日志记录:

确保停用日志记录并禁用调试选项 在构建要发布的应用程序之前。你可以取消激活 通过删除对源文件中日志方法的调用来进行日志记录

但是,您应该保留一些日志记录,例如在异常情况下打印堆栈跟踪等,因为如果删除这些日志记录,您在调试可能的崩溃时可能会遇到很多问题。

您可以查看一下,他们建议您禁用日志记录:

确保停用日志记录并禁用调试选项 在构建要发布的应用程序之前。你可以取消激活 通过删除对源文件中日志方法的调用来进行日志记录


但是,您应该保留一些日志记录,例如在异常情况下打印堆栈跟踪等,因为如果您删除它们,以后调试可能的崩溃时可能会遇到很多问题。

我只是创建了自己的日志类,并为android.util.Log方法构建了包装器方法,它在写日志之前检查BuildConfig.DEBUG。

我只是为android.util.log方法创建了自己的日志类和构建包装器方法,这些方法在wr之前检查BuildConfig.DEBUG
正在删除日志。

要删除对日志类的调用,请将以下内容添加到proguard规则文件中:

-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(...);
}

要删除对日志类的调用,请将以下内容添加到proguard规则文件中:

-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(...);
}

看这里的复制品看这里的复制品