Debug:BuildConfig

博客源址http://blog.csdn.net/buaaroid/article/details/49496779

2015 年 01 月 25 日

在很早之前我發佈了這篇博客Android BuildConfig.DEBUG的妙用, 提到了Eclipse中通過BuildConfig.DEBUG字段用來調試Log非常好用,但是殊不知在Android Studio中通過Gradle這種用法更加強大。

BuildConfig.DEBUG

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

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;
}

自定義BuildConfig字段

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

語法很簡單:

buildConfigField "boolean", "API_ENV", "true"

例如,(測試環境:Android Studio2.1.1 gradle爲2.1.0)在‘app’module的build.gradle中添加如下代碼:


然後 Build -> Rebulid Project 在 app/.../buidlConfig目錄下 分別自動生成BuildConfig.API_ENV;


上述語法就定義了一個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等模式下的環境就好了,打包的之後毫無顧慮。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章