這並不因爲工作,在所生成的BuildConfig
,STORE
結束UNLOCKED
和PLAYSTORE
前限定。我怎樣才能做到這一點?搖籃buildConfigField非法前向參考
的build.gradle
android {
defaultConfig {
buildConfigField 'int', 'UNLOCKED', '0'
buildConfigField 'int', 'PLAYSTORE', '1'
}
productFlavors {
unlocked {
buildConfigField 'int', 'STORE', 'UNLOCKED'
}
playStore {
buildConfigField 'int', 'STORE', 'PLAYSTORE'
}
}
}
BuildConfig.java(生成,Play商店中的香味)
// Fields from product flavor: playStore
public static final int STORE = PLAYSTORE; // ERROR
// Fields from default config.
public static final int PLAYSTORE = 1;
public static final int UNLOCKED = 0;
樣品用例
if(BuildConfig.STORE == BuildConfig.PLAYSTORE)
validatePurchaseOnPlay();
這裏有什麼用例?這可能有助於我們找出解決方法。 – stkent
@stkent在問題中添加了一個用例 – cambunctious
我的猜測是,構建配置字段將始終以「最具體到最不具體」的方式生成,以允許更具體的配置閉包覆蓋在較不特定的配置閉包中定義的字段。運行明顯的測試支持這個想法。鑑於此,我認爲你不能單獨使用構建配置字段來實現你想要做的。你的建議解決方案對我來說似乎沒問您大概可以在任何類中找到常量,而不僅僅是定製應用程序子類? – stkent