首先在Gradle腳本中默認的debug和release兩種模式BuildCondig.DEBUG字段分別爲true和false,並且不可更改。該字段編譯後自動生成,在Studio中生成的目錄在 app/build/source/BuildConfig/Build Varients/package name/BuildConfig 文件下。咱們以9GAG爲例來看下release模式下該文件的內容:api
public final class BuildConfig { public static final boolean DEBUG = false; public static final String APPLICATION_ID = "com.storm.9gag"; 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; }
你們看到上述內容的時候發現莫名的有個LOG_DEBUG字段,這個徹底是我自定義的一個字段,我來用它控制Log的輸出,而沒有選擇用默認的DEBUG字段。舉例一個場景,咱們在App開發用到的api環境假設可能會有測試、正式環境,咱們不可能全部的控制都經過DEBUG字段來控制,並且有時候環境複雜可能還會有兩個以上的環境,這個時候就用到了Gradle提供了自定義BuildConfig字段,咱們在程序中經過這個字段就能夠配置咱們不一樣的開發環境。ruby
語法很簡單:app
buildConfigField "boolean", "API_ENV", "true"
上述語法就定義了一個boolean類型的API_ENV字段,值爲true,以後咱們就能夠在程序中使用BuildConfig.API_ENV字段來判斷咱們所處的api環境。例如:測試
public class BooheeClient { public static final boolean DEBUG = BuildConfig.API_ENV; public static String getHost { if (DEBUG) { return "your qa host"; } return "your production host"; } }
不只如此,若是遇到複雜的環境,你也可能自定義一個String類型的字段,這種方式免去了發佈以前手動更改環境的麻煩,減小出錯的可能性,只須要在Gradle配置好debug、release等模式下的環境就行了,打包的以後毫無顧慮。ui