我的Android项目有不同的配置(例如谷歌、亚马逊)。Gradle允许生成BuildConfig参数,这些参数可以在运行时进行检查,但这不是我真正想要的。我希望有一个特定的代码(方法、类等)在项目中存在或不存在(不仅仅是绕过),这取决于配置。
这就是我在Eclipse中实现它的方式。我在Eclipse项目中有一个文件夹(例如,命名为特定于平台的),未包含在BuildPath中,还有几个Ant脚本(make google,make amazon),它们将相关文件从特定于平台文件夹复制到src文件夹,并从src文件夹中删除不相关的文件。
由于Eclipse提供了一个Ant窗口来查看所有脚本,所以我可以运行一个特定的脚本并重新配置项目以适应所选的配置。
有没有办法在安卓工作室中做到这一点?我知道Gradle允许运行甚至导入Ant脚本,但它不像真正的Ant那样方便,而且我找不到选择运行脚本的方法。也许Gradle提供了自己的方法来做到这一点?
对于两种口味来说,它是可行的,但如果我说有三种口味,模块1出现在口味1和2中,模块2出现在味道1和3中,这是否意味着在每个文件夹中复制这些模块?所以,每次我修改这样一个模块的代码时,我都需要在另一个文件夹中复制修改。
如果您组织代码,则不会。
您似乎在通用地使用"模块"。安卓工作室对这个术语有一个特定的定义(Gradle称之为子项目)。你可以利用这些来帮助你的事业。
假设您创建了google
、amazon
和yandex
产品口味。然后:
-
所有三个通用的代码都会进入
src/main/
。 -
任何对单个风味唯一的代码都会进入该风味的源集合(例如,
src/yandex/
)。 -
两种风格共享的任何代码都会进入一个库模块,该模块使用风格特定的依赖关系(例如
yandexCompile
和amazonCompile
)添加到适当的风格中。
在所有情况下,都有一个代码副本。它是可以进入应用程序模块(例如app/
)还是进入库模块,取决于哪些风格需要该代码。对于这样的场景,依赖项注入将帮助您管理哪些代码,然后为每种风格连接在一起。