2011-10-16 16 views
2

我知道,要加快東西,消除CPU浪費的應用程序發佈時,我可以簡單地用含proguard.cfg導出:如果USB調試未選中,Log.x()是否會佔用CPU?

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

但是...如果,玩花樣的方便最小化的目的在調試和發佈版本之間(總是需要在安裝其他程序之前完全卸載一個),我想要始終運行調試版本,沒有通過USB連接並且Settings => Applications => Development => USB debugging未經檢查,請執行任何Log.v (),Log.i()等得到執行?

我不能真正連接DDMS通過USB來檢查這個我自己...所以,謝謝你的任何提示。

回答

2

它仍然會將您的日誌消息寫入內部日誌緩衝區。

市場上有些應用程序可以顯示這個緩衝區,其中一個叫做Android系統信息或類似的東西,AFAIR。

+0

謝謝! Android系統信息應用程序令人大開眼界。我在2年前的手機日誌中發現了...這必須佔用大量空間。有沒有辦法清空該日誌文件? – uTubeFan

1

根據ProGuard的手冊(http://proguard.sourceforge.net/index.html#/manual/usage.html):

-assumenosideeffects class_specification

指定沒有任何副作用(比可能返回值等)的方法。在優化步驟中,如果ProGuard確定不使用返回值,則ProGuard將移除對這些方法的調用。請注意,ProGuard會分析您的程序代碼以自動查找這些方法。它不會分析庫代碼,因此該選項因此可能有用。例如,您可以指定方法System.currentTimeMillis(),以便任何對它的空閒調用都將被刪除。請注意,ProGuard將該選項應用於指定方法的整個層次結構。只適用於優化。一般來說,做出假設可能是危險的;你可以很容易地破解處理後的代碼。只有在您知道自己在做什麼的情況下才使用此選項!

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

+0

謝謝,但我的問題是**沒有關於Proguard **。我的問題恰恰相反:**否**應用Proguard,**但** USB調試未選中*和* USB電纜斷開連接。 Log.v(),Log.i()等會發生什麼? – uTubeFan

+1

寫入日誌。無論USB調試狀態如何,它總是被寫入。您可以在設備上安裝logview應用程序(如下所示:https://market.android.com/details?id=ukzzang.android.app.logviewer),並確保日誌記錄仍然發生。我相信有一個syslog守護進程正在運行。 –

+0

謝謝加兩個。有沒有辦法清空該日誌文件? (是否只有一個日誌文件?) – uTubeFan