2011-02-11 40 views
1

我在應用程序中進行了廣泛的日誌記錄以簡化調試,但我希望確保只有最低限度進入生產應用程序。我的理解是,編譯器不會刪除未使用的代碼,也沒有使用Android進行條件編譯,但Proguard會刪除未使用的代碼。下面是一個示例跟蹤類:如何將日誌記錄添加到Proguard剝離的Android Java應用程序中?

public class Trace 
{ 
    public static final int logginglevel = 5; 

    public static final boolean errors = logginglevel > 1; 
    public static final boolean warnings = logginglevel > 2; 
    public static final boolean info = logginglevel > 3; 
    public static final boolean debug = logginglevel > 4; 
} 

然後在應用程序本身的日誌是這樣的:

if (Trace.debug) Log.d(TAG,"problem") 

將允許Proguard的標識使用的語句,並刪除這個成功嗎?這個說法很醜陋,但它是最短的,我可以看到它可以。

是否有更簡潔的方式在Android應用程序中包含日誌記錄,但是是否已自動剝離出生產版本?我懷疑有可能配置Proguard本身來刪除代碼的特定方面,但不知道這是否是比這更好的解決方案。

回答

3

從另一個StackOverflow的響應...

添加到您的ProGuard配置文件:

-assumenosideeffects class android.util.Log { 
    public static *** i(...); 
    public static *** d(...); 
    public static *** v(...); 
} 
相關問題