【问题标题】:Android what's the best way to hide logs? [duplicate]Android隐藏日志的最佳方法是什么? [复制]
【发布时间】:2015-08-05 06:48:15
【问题描述】:

所以.. 我正在使用 Log.d("", "");在我的应用程序的许多地方进行调试。 但我不希望这些日志出现在商店中。

现在为了将它们隐藏在商店版本中,我创建了一个 Constant.class 并在其中放置了一个名为 debugMode 的布尔值,并将我拥有的每个日志包装在这样的 if 语句中:

if (Constant.debugMode) {
Log.d(TAG, "check123");
}

然后当我构建一个谷歌商店 apk 时,我将该布尔值更改为 true 而不是 false。

在我看来这有点笨拙,有没有更有效的方法来做到这一点?

【问题讨论】:

    标签: android logging


    【解决方案1】:

    创建一个简单的记录器类,它具有公共静态方法和一个开关,以便仅为应用程序的调试版本启用日志。这是一个示例代码。

    public class Logger {
    
        public static final boolean D = BuildConfig.DEBUG;
    
        public static void LogInfo(String TAG, String msg) {
            if (D) {
                Log.i(TAG, msg);
            }
        }
    
        public static void LogWarrning(String TAG, String msg) {
            if (D) {
                Log.w(TAG, msg);
            }
        }
    
        public static void LogDebug(String TAG, String msg) {
            if (D) {
                Log.d(TAG, msg);
            }
        }
    
        public static void LogError(String TAG, String msg) {
            if (D) {
                Log.e(TAG, msg);
            }
        }
    }
    

    用法

    Logger.LogDebug("Test", "Example");
    

    这样,您可以将 if 子句保存在一个地方,而不必担心它们。而且我不认为这样笨拙。

    【讨论】:

      【解决方案2】:

      我发现一个更简单的解决方案是忘记所有的 if 检查 这个地方,只需使用 ProGuard 去除任何 Log.d() 或 Log.v() 当我们调用 Ant 发布目标时调用方法。

      这样,我们总是可以定期输出调试信息 构建并且不必为发布构建进行任何代码更改。 ProGuard 还可以对字节码进行多次传递以删除其他 不需要的语句,空块并且可以自动内联short 适当的方法。

      例如,这是一个非常基本的 Android ProGuard 配置:

      -dontskipnonpubliclibraryclasses -不要混淆 -强制处理 -优化通过 5

      -keep class * 扩展 android.app.Activity -assumenosideeffects 类 android.util.Log { 公共静态 * d(...); 公共静态 * v(...);所以你可以把它保存到一个文件中,然后从 Ant 调用 ProGuard,传入你刚刚编译的 JAR 和 您正在使用的 Android 平台 JAR。

      @REF:Remove all debug logging calls before publishing: are there tools to do this?

      【讨论】:

        猜你喜欢
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-18
        • 2019-03-09
        • 2015-05-10
        • 2010-10-16
        相关资源
        最近更新 更多