2014-11-05 25 views
1

獲得財產,如果我使用命令行,像這樣在我gradle.properties文件中設置一個屬性:如何從gradle.properties

gradle build -Dproperty=myString

,並在我的Android項目在我的資源目錄configuration.properties,如何我可以從gradle.properties文件中獲得configuration.properties的新屬性嗎?

我已經試過以下設置:

gradle.properties

property=defaultString 
anotherProperty=defaultBoolean 

configuration.properties

[email protected]@ 

POTEN TIAL SOLUTION 1

對每種口味使用configuration.properties文件。

每種味道的資源聽起來像一個好主意,但我想在main有一個默認列表,並且只覆蓋所需的屬性。我有很多屬性,有些味道只需要重寫一個。所以這確實有用,但並不理想。


潛在的解決方案2

使用buildConfigField傳遞什麼,我需要的Java代碼。

這裏的問題是,我有兩個模塊:appapi - 在apiapp的依賴。在appbuild.gradle中設置buildConfigField可讓我在app代碼中訪問它們,但我也需要從api模塊訪問它。

+0

我不認爲你可以。什麼是用例? (順便說一句,'-D'沒有在'gradle.properties'中設置(project)屬性;它爲Gradle JVM設置了一個系統屬性。相當於在'gradle.properties'中設置屬性的命令行是'-P'。) – 2014-11-06 07:33:42

+0

謝謝你的迴應。我目前從項目源代碼中的configuration.properties中讀取(從主應用程序模塊和獨立的api模塊中)。例如,我有一個名爲'marketplace'的屬性,它根據我正在構建的應用程序的哪個變體替換代碼中的某些內容。我實際上希望能夠從應用程序的'productFlavors'配置這些,因爲這是我計劃用於不同構建變體的 - 但似乎無法將它們設置在那裏。 – 2014-11-06 09:00:47

回答

0

要改變每種風味的屬性值,可以使用每種風味的資源文件。有關更多信息,請檢查Android Gradle plugin docs。 PS:如果屬性值僅用於激活代碼庫的不同部分,請考慮使用每風味代碼。

+0

那麼沒有辦法從java代碼中訪問'gradle.properties'文件嗎? – 2014-11-06 10:35:20

+0

您可能能夠以某種方式實現*,例如通過從'gradle.properties'生成一個資源文件。然而,這不是一流的功能,你不能通過風格來改變值(只有一個'gradle.properties'文件,而不是每個風格)。另一方面,每種風味資源(或每種風味代碼)似乎是解決您問題的簡單而習慣的解決方案。 – 2014-11-06 11:58:12

+0

per-flavor資源聽起來像一個好主意,但我想在'main'中有一個默認列表,並且只覆蓋所需的屬性。我有很多屬性,有些味道只需要重寫一個。我將以對該問題進行編輯的形式添加此內容。 – 2014-11-06 17:04:27

相關問題