2015-05-09 69 views
0

根據this我可以在我的Android Studio項目中創建幾個「風格」。但是,看起來我只能創建兩棵樹,然後才能構建。從build.gradle中讀取元數據

是否可以在我的build.gradle文件中添加變量,然後我可以從代碼訪問,以便我可以對如何構建應用程序有更細緻的控制?

E.g.在我build.gradle

productFlavors { 
    free { 
     applicationId "com.example.app.free" 
     showAds "yes" 
    } 
    full { 
     applicationId "com.example.app.full" 
     showAds "no" 
    } 
} 

,然後在我的代碼

String showAds = Gradle.getString("showAds"); 
if ("yes".equals(showAds)) { 
    // show ads 
} 
+3

'buildConfigField「布爾型」,「showAds」,「true」',然後'BuildConfig.showAds'應該有所訣竅。你可以在每種風格中重新定義它 – Blackbelt

回答

1

是否有可能在我gradle.build文件中添加變量,我可以再從代碼中訪問,讓我可以對我的應用如何構建有更細緻的控制?

我推測你真的是指你的build.gradle文件。

對於您的特定情況,您可以使用已有的BuildConfig.FLAVOR,這將是freepaid

或者,你可以使用buildConfigField你自己的字段添加到BuildConfig

productFlavors { 
    free { 
     applicationId "com.example.app.free" 
     buildConfigField "boolean", "I_CAN_HAZ_ADS", 'true' 
    } 
    full { 
     applicationId "com.example.app.full" 
     buildConfigField "boolean", "I_CAN_HAZ_ADS", 'false' 
    } 
} 

然後,你要提到BuildConfig.I_CAN_HAZ_ADS在Java代碼中。

請注意,我只使用BuildConfig字段爲String類型,而不是boolean。 AFAIK,這樣的任何簡單的類型應該工作。

+0

我確實找到了'BuildConfig.FLAVOR',但添加的不可用。我在'build.gradle'文件中得到了「無法解析符號buildConfigField」。 –

+1

@BartFriederichs在腳本中進行更改後,您是否與Gradle同步?另外檢查你是否正確定義變量。 – TheLittleNaruto

+0

@TheLittleNaruto我想那就是它。我似乎現在都在努力。 –