聲明
本文章都隻是在
AndroidStudio
基于
Gradle
建構項目開發的驗證,是以不保證其它開發環境與建構項目方式也是這樣
BuildConfig身在何處
了解一個東西前,至少先要知道這東西在哪裡吧!而我們今天要了解的這個類又在哪裡了,我相信應該還有一些安卓開發人員沒見過此類的身影。那麼這類在哪裡了?
答案:一般情況是在
applicationId<應用包名>.BuildConfig
;如:我的應用ID為:
com.jay.demo
,那麼此類的全類名就是
com.jay.demo.BuildConfig
;
但這是一般情況,也就是說我們在建立工程時确定的應用包名,但這裡答案準确的來說,此類是和
R<resouce>
類在同一個包裡的,那麼
R<resouce>
類的名路徑是怎麼确定的了?
答案:很明确,是由
AndroidManifest.xml
檔案中的
manifest
标簽中的
package
屬性指定的包路徑
BuildConfig有啥用
我們先從類名來試圖了解這個類是做什麼的,
BuildConfig
很明顯是由
Build
與
Config
組成,
Build = 建構
,
Config = 配置
,那麼直譯過來就是
BuildConfig = 建構配置
,大緻猜到了這個類可能會與一個配置相關的資訊
BuildConfig的真面目
package com.jay.demo;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.jay.demo";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = ;
public static final String VERSION_NAME = "1.0";
public BuildConfig() {
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
這是建立一個項目後
BuildConfig
類,那這類中有些啥東西了?如果看過我之前的一篇文章,可能會更好的了解–Android Studio中Module的build.gradle詳解,說之前科普下一個小知識,此類是不可修改的,嚴格來說不能通過我們之前正常編碼那樣對類一樣修改
package com.jay.demo;
public final class BuildConfig {
//這個常量是辨別目前是否為`debug`環境,由`buildType`中的`debuggable`來确定的,這是修改此類值的一個方式
public static final boolean DEBUG = Boolean.parseBoolean("true");
//application id
public static final String APPLICATION_ID = "com.jay.demo";
//目前編譯方式
public static final String BUILD_TYPE = "debug";
//編譯管道,如果沒有管道,則為空
public static final String FLAVOR = "";
//版本号
public static final int VERSION_CODE = ;
//版本名,是以擷取目前應用的版本名可以直接 BuildConfig.VERSION_NAME
public static final String VERSION_NAME = "1.0";
public BuildConfig() {
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
上篇文章已經簡單講解了 BuildConfig
類,今天我們來學習怎麼擴充一些我們自己的資訊進去
給FLAVOR字段指派
FLAVOR
字段是在我們多管道打包的時候會自動指派的,
value
取的就是我們的管道名<怎麼利用AndroidStudio打多管道,請大家自行找搜尋引擎>。
下面我們直接來實操一下:
android {
......
productFlavors{
應用寶{
}
}
......
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
package com.jay.demo;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.jay.demo";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "應用寶";
public static final int VERSION_CODE = ;
public static final String VERSION_NAME = "1.0";
public BuildConfig() {
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
這時我們進入
BuildConfig
,就可以看到
FLAVOR
被指派了。
添加自己的字段
BuildConfig
自有的一些常量值可能并不是很厲害,但如果可以添加自己想要的一些值就好了,這樣就可以把一些常量值放置在此類了,很慶幸,這樣的需求完全可以實作。
我們假設有這麼一個需求,一般我們
app
和服務端互動時,要請求服務端的
Url
,然而
BaseUrl
在開發時大家一般都是抽出來定義成常量,這裡我們就把這個
BaseUrl
寫到1
BuildConfig
中。
android {
......
buildType {
debug {
buildConfigField "String","BASE_URL","\"http://www.test.com/\""
buildConfigField "int","DATE","20160701"
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
我們在
buildType
中的任意type(包括自定義的)中輸入
buildConfigField
文法來實作的,此方法有三個參數
buildConfigField(String type,String name,String value)
,解釋下:
String type | 要建立的字段類型,如上面的 與 |
---|---|
String name | 要建立的字段名,如上面的 與 |
String value | 建立此字段的值,如上面的 與 |
但這裡要注意一點就是,當建立的類型為
String
時,定義value的時候要注意加上字元串不能缺少的雙引号
""
,由于參數本身要傳入的類型也是
String
,是以我們在添加的時候加上轉義字元。
package com.jay.demo;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.jay.demo";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = ;
public static final String VERSION_NAME = "1.0";
public static final String BASE_URL = "http://www.test.com/";
public static final int DATE = ;
public BuildConfig() {
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15