Android BuildConfig:Gradle自定義你的BuildConfig

BuildConfig.DEBUG

首先在Gradle腳本中默認的debug和release兩種模式BuildCondig.DEBUG字段分別爲true和false,而且不可更改。該字段編譯後自動生成,在Studio中生成的目錄在app/build/source/BuildConfig/Build Varients/package name/BuildConfig 文件下。我們來看下release模式下該文件的內容:

public final class BuildConfig {
  public static final boolean DEBUG = false;
  public static final String APPLICATION_ID = "com.yy.test";
  public static final String BUILD_TYPE = "release";
  public static final String FLAVOR = "wandoujia";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
  // Fields from build type: release
  public static final boolean LOG_DEBUG = false;
}

自定義BuildConfig字段

大家看到上述內容的時候發現莫名的有個LOG_DEBUG字段,這個完全是我自定義的一個字段,我來用它控制Log的輸出,而沒有選擇用默認的DEBUG字段。舉例一個場景,我們在App開發用到的api環境假設可能會有測試、正式環境,我們不可能所有的控制都通過DEBUG字段來控制,而且有時候環境複雜可能還會有兩個以上的環境,這個時候就用到了Gradle提供了自定義BuildConfig字段,我們在程序中通過這個字段就可以配置我們不同的開發環境。

語法很簡單:
buildConfigField "boolean", "API_ENV", "true"

比如我們可以在不同的包下來設置不同的訪問地址,在通過BuildConfig.baseUrl來引用

defaultConfig {
  ...
    buildConfigField("String","baseUrl","http://api.xx.com")
}

buildTypes {
...
    debug {
        buildConfigField("String","baseUrl","http://10.10.10.1")
    }
}
productFlavors{
    Flavortest{
        buildConfigField("String","baseUrl","http://special.xx.com")//或者設置不同渠道地址不同
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章