如果取消选中USB调试,Log.x()会占用任何CPU吗?

时间:2011-10-16 14:44:07

标签: android logcat android-logcat

我知道在应用程序发布时加快速度并消除CPU浪费,我只需使用proguard.cfg导出它包含:

-assumenosideeffects class android.util.Log {
    public static *** v(...);
    public static *** i(...);
    public static *** d(...);
    public static *** w(...);
    public static *** e(...);
}

但是......如果为了方便地最小化Debug和Release版本之间的混乱(在安装另一个版本之前总是需要完全卸载一个),我想总是运行调试版本,没有通过USB和Settings => Applications => Development => USB debugging 未选中进行连接,是否执行任何Log.v(),Log.i()等等?

我无法通过USB连接DDMS来自行检查...所以,谢谢你的任何提示。

2 个答案:

答案 0 :(得分:2)

它仍然会将您的日志消息写入内部日志缓冲区。

市场上有一些可以显示此缓冲区的应用程序,其中一个称为Android系统信息,或类似的东西,AFAIR。

答案 1 :(得分:1)

根据ProGuard手册(http://proguard.sourceforge.net/index.html#/manual/usage.html):

  

-assumenosideeffects class_specification

     

指定没有任何副作用的方法(除了可能返回值)。在优化步骤中,如果ProGuard可以确定不使用返回值,则会删除对此类方法的调用。请注意,ProGuard将分析您的程序代码以自动查找此类方法。它不会分析库代码,因此该选项对此有用。例如,您可以指定方法System.currentTimeMillis(),以便删除对它的任何空闲调用。请注意,ProGuard将该选项应用于指定方法的整个层次结构。仅适用于优化时。一般来说,做出假设可能是危险的;您可以轻松破坏已处理的代码。如果您知道自己在做什么,请仅使用此选项!

因此,在APK中甚至不存在对Log.v(),Log.i()等的调用。