2017-10-18 87 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

相关问题