修改代码以适应 Android Studio 中的不同配置

Modifying code to suit different configurations in Android Studio

我的 Android 项目有不同的配置(例如 google,亚马逊)。 Gradle 允许生成 BuildConfig 参数,可以在 运行 时检查,但这不是我真正想要的。我希望在项目中有一个特定的代码(方法、class 等) 存在或不存在 (不仅仅是绕过),具体取决于配置。

这就是我在 Eclipse 中实现它的方式。我在 Eclipse 项目中有一个文件夹(例如命名为 platform-specific),BuildPath 中 not included 以及几个 Ant 脚本(make-google, make-amazon), 将相关文件从特定于平台的文件夹复制到 src 文件夹,并从 src 文件夹中删除不相关的文件。

由于 Eclipse 提供了一个 Ant window 来查看所有脚本,我可以 运行 一个特定的脚本并重新配置项目以适应所选的配置。

有没有办法在 Android Studio 中做到这一点?我知道 Gradle 允许 运行 甚至导入 Ant 脚本,但它不像 'true' Ant 那样方便,而且我找不到选择脚本的方法至 运行。也许 Gradle 提供了自己的方法来做到这一点?

For two flavours it will work, but if I have say 3 flavours, module 1 appears in flavours 1 and 2, module 2 in flavours 1 and 3, will it mean replicating those modules in each folder? So, every time I modify a code a such a module, I need to replicate the modification in another folder.

如果您组织代码,则不会。

您似乎在笼统地使用 "modules"。 Android Studio 对该术语有具体定义(Gradle 指的是子项目)。您可以利用这些来帮助您的事业。

假设您创建了 googleamazonyandex 产品口味。那么:

  • 所有三个通用的任何代码都进入 src/main/

  • 单一风格的任何代码都在该风格的源集中(例如,src/yandex/)。

  • 任何由两种风格共享的代码都会进入一个库模块,该模块使用特定于风格的依赖项(例如,yandexCompileamazonCompile)添加到适当的风格中.

在所有情况下,您的代码只有一份。它是否可以进入应用程序模块(例如,app/)或进入库模块取决于哪些风格需要该代码。对于这样的场景,依赖注入将帮助您管理然后为每种风格将哪些代码连接在一起。