【问题标题】:Android hide logs in the application when upload to marketAndroid在上传到市场时隐藏应用程序中的日志
【发布时间】:2012-03-22 17:27:08
【问题描述】:

我的应用程序有很多 Log.i();为调试添加的语句。现在如果这样的应用需要上传到市场

  1. 是否应该删除这些日志,如果是,是否有比手动删除更简单的方法

  2. 如果不删除,如果应用程序在从市场安装后由用户运行,这些日志是否会出现

(我试图查看某些应用程序的日志,但我看不到来自应用程序的任何日志。我只能看到来自活动管理器的 android 日志。但我不明白为什么如果不删除日志就不会显示日志来自代码)

【问题讨论】:

    标签: android publishing logging


    【解决方案1】:

    Preetha,日志将保存在手机上,任何用户/开发人员都可以通过安装 Catlog 等应用程序来查看它们,即使不使用 adb!这是一个问题,因为您会向用户/其他开发人员提供不必要的、有时是机密的数据。

    解决这个问题的简单方法?

    一个。使用Proguard自动屏蔽所有日志,更多信息在this stackoverflow thread

    这里可以在Proguard中自动屏蔽字节码级别的所有日志

    -assumenosideeffects class android.util.Log {
        public static int v(...);
    }
    

    例如,上面会删除任何详细的日志记录,more in this thread

    b.我对所有日志都使用 if(DEBUG) Log.i,因此只需更改布尔 DEBUG,我就可以打开/关闭所有日志

    c。一个简单的解决方案:将所有 Log.i 替换为 //Log.i :)

    【讨论】:

    • 非常感谢您的回答。又是一个疑惑。我是否需要安装 Catlog 之类的应用程序,如果我打开了 eclipse,并且如果我将手机连接到 PC,我可以在 logcat 中看到吗?
    • 是的,作为开发者你不需要安装Catlog,只要设备连接PC就可以在eclipse上看到logcat中的所有日志。如果您的设备未连接到 PC,并且您想查看设备本身的日志,您可以在设备上安装 Catlog 应用程序,您可以在其中查看日志。
    • 在尝试匹配堆栈跟踪时,使用此方法会影响行号吗?我看过其他关于这个解决方案的帖子,有些人说它只影响字节码,所以行号保持不变,而另一些人则说不会。你能确认一下吗?
    【解决方案2】:

    是的,一个好的做法是删除测试期间调用的所有日志方法,

    是的,当用户下载应用程序时,它会向他/她显示您制作的所有日志。

    您可以做的是在该类中使用static 方法创建一个static Class

    当您想要进行日志调用时,只需通过 ClassName.Method 从任何地方调用该方法

    一旦您完成了测试,只需 COMMENT 在静态类中编写的静态方法中的定义。

    【讨论】:

    • 这通常是我维护日志的方式
    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    相关资源
    最近更新 更多