我已经使用Log.d()并Log.e()通过我的android应用程序进行调试.我想知道如果我发布这样的应用程序,用户是否会看到我放入的所有调试语句?我是否需要做一些特别的事情,以便用户即使挂起'adb logcat'也看不到调试日志?
谢谢.
在某些情况下,保留日志记录可能非常糟糕:http://web.archive.org/web/20121222023201/http: //vbsteven.com/archives/535
您可以使用ProGuard自动删除它们:
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
}
Run Code Online (Sandbox Code Playgroud)
考虑使用这个:isLoggable()
检查指定标记的日志是否可在指定级别记录。任何标签的默认级别都设置为 INFO。这意味着将记录高于(包括 INFO)的任何级别。在调用任何日志记录方法之前,您应该检查是否应该记录您的标签。您可以通过设置系统属性来更改默认级别:
setprop log.tag.<YOUR_LOG_TAG> <LEVEL>其中级别可以是 VERBOSE、DEBUG、INFO、WARN、ERROR、ASSERT 或 SUPPRESS。SUPPRESS 将关闭您的标签的所有日志记录。您还可以创建一个 local.prop 文件,其中包含以下内容:log.tag.<YOUR_LOG_TAG>=<LEVEL>并将其放入/data/local.prop
就个人而言,对于发布,我会删除调试日志并使用 Proguard 保留错误日志。
最好像这样包裹它:
public class MyLog {
public static void d(String tag, String msg) {
if (Log.isLoggable(tag, Log.DEBUG)) {
Log.d(tag, msg);
}
}
public static void i(String tag, String msg) {
if (Log.isLoggable(tag, Log.INFO)) {
Log.i(tag, msg);
}
} // and so on...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18070 次 |
| 最近记录: |