2017-10-18 134 views
0

我對Android項目(例如Google,amazon)有不同的配置。 Gradle允許生成可在運行時檢查的BuildConfig參數,但這並不是我真正想要的。我希望在項目中存在或不存在的特定代碼(方法,類別等)(不只是繞過),具體取決於配置。修改代碼以適應Android Studio中的不同配置

這就是我在Eclipse中實現的方式。我在Eclipse項目中有一個文件夾(命名爲例如特定於平臺的),不包含在BuildPath中的以及幾個Ant腳本(make-google,make-amazon),將相關文件從平臺特定的文件夾複製到src文件夾並從src文件夾中刪除不相關的文件。

由於Eclipse提供了一個Ant窗口來查看所有腳本,我可以運行一個特定的腳本並重新配置該項目以適應所選的配置。

有沒有辦法在Android Studio中做到這一點?我知道Gradle允許運行甚至導入一個Ant腳本,但它與'true'Ant不太方便,而且我找不到選擇腳本運行的方式。也許Gradle提供了自己的方式來做到這一點?

+0

https://developer.android.com/studio/build/build-variants.html – CommonsWare

+0

CommonsWare:這不允許修改代碼(正如我所提到的) – cyanide

+0

當然可以。將特定配置所需的代碼放在源配置中,以適應該配置的風格。將所有常用元素放在'main'中。 – CommonsWare

回答

0

對於兩種形式,將工作,但如果我有說3種口味,模塊1只出現在口味1和2,模塊2口味1和3,將意味着每個文件夾中複製這些模塊?所以,每次我修改一個這樣的模塊的代碼,我需要在另一個文件夾中複製修改。

如果您組織您的代碼,則不是。

您似乎一般使用「模塊」。 Android Studio具有該術語的具體定義(Gradle將其稱爲子項目)。你可以利用這些來幫助你的事業。

假設您創建了google,amazonyandex產品口味。然後:

  • 所有三個共同的任何代碼都在src/main/

  • 對於單一味道來說唯一的任何代碼都來自該味道的源集(例如,src/yandex/)。

  • 任何由兩種口味共享的代碼進入一個庫模塊,該模塊使用特定口味的依賴項添加到適當的口味中(例如,yandexCompileamazonCompile)。

在所有情況下,都有一個代碼副本。它是否可以進入應用程序模塊(例如,app/)或進入庫模塊取決於哪些口味需要該代碼。對於這樣的場景,依賴注入將幫助您管理哪些代碼隨後會針對每種風格進行連接。

+0

如果您建議使用這種方法的示例(開源)項目,這將會很有幫助。 – cyanide

+0

@cyanide:如果通過「這種方法」你的意思是「產品風味」,在Google上搜索「build.gradle」productFlavors「'會出現很多頁面,包括[文檔](https://developer.android.com /studio/build/build-variants.html)(儘管請注意,從Android Studio 3.0開始,所有產品風格都需要成爲「flavorDimension」的一部分)。如果採用「這種方法」,則意味着我在如果有任何開源項目使用它,我會相當驚訝。 – CommonsWare