GRADLE自定義你的BuildConfig

在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')
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,937評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,335評論 25 708
  • 這一章主要針對項目中可以用到的一些實用功能來介紹Android Gradle,比如如何隱藏我們的證書文件,降低風險...
    acc8226閱讀 7,685評論 3 25
  • (第五天打卡) 閱讀書名:《活的有趣》 作者:蔡瀾 我們生活在一個以"有用和無用"論價值的時代。一件...
    一花亦真閱讀 616評論 4 3
  • 為群 阡陌田野, 先靈魂不舍。 寄情春風輕吻葉, 喜見兒孫拜謁。 裊裊云天香煙, 寄托后輩思念。 年華時光霜...
    a3177b5f046a閱讀 278評論 0 0