在Android開發(fā)過程當中我們使用Log來打印日志,方便我們調(diào)試。然而我們不希望調(diào)試的日志在發(fā)布版本中被其他開發(fā)者看到,于是我們一般的做法是在發(fā)布正式版本時將變量DEBUG改為false。
public class LogUtil {
private static final boolean DEBUG=true;
public static void d(String tag, String msg) {
if (DEBUG)
Log.d(tag, msg);
}}
但是每次在發(fā)布之前都要手動去改這個變量,不是很方便,而且不排除開發(fā)者忘記改的情況。那么有沒有更好更方便的做法呢?其實,谷歌給我們提供了一種新的調(diào)試機制,即BuildConfig.DEBUG。即:新增了一個特性,允許開發(fā)者只在Debug模式下運行部分代碼。Builds會生成一個叫做BuildConfig的類,通過BuildConfig.DEBUG可以自動判斷是否是debug模式。
所以可以這樣寫
public class LogUtil {
private static final boolean DEBUG=true;
public static void d(String tag, String msg) {
if (BuildConfig.DEBUG)
Log.d(tag, msg);
}}
下面來學一下自定義參數(shù)的方式:
我們可以在該類下自定義一個字段,來控制debug與release版本的日志輸出。
BuildConfig位置
Paste_Image.png
注意格式,都用雙引號括起來
自定義字段
上圖中DEBUG的值會根據(jù)apk是否是release版本而自動變化,所以將上述代碼中的private static final boolean DEBUG=true;
改為private static final boolean DEBUG=BuildConfig.LOG_DEBUG;
就不用每次打包時去修改"DEBUG的值"啦
踩到的坑
當你的LogUtil放在被依賴的module中時,你會發(fā)現(xiàn)BuildConfig.DEBUG的值總為false。
解決方法如下:
library
android {
publishNonDefault true
}
app
dependencies {
releaseCompile project(path: ':library', configuration: 'release')
debugCompile project(path: ':library', configuration: 'debug')
}