2015-01-12 27 views
9

在我目前的应用程序,我有2个版本,让我们打电话给他们build 1build 2。据我所知,两种口味可以共享公共代码/资源,而且还可以有独立的代码和资源,如下列:Android Studio - 可以与其他口味共享代码吗?

Two Flavours Diargram

什么,我试图做的是扩大build 2,使其共享一些代码与其他建立(例如build 3)。无论是分享一些代码如下所示:

Two Flavours Sharing Code

这将BUILD2,并建立3分享一些代码/资源,同时必须有自己独特的代码集的能力。 或者:

Build 3 Extending Build 2

这里,build 3正在扩大build 2,使从build 2所有代码和资源在这两个可用版本,但build 3也可以有自己独特的代码/资源。

我认为延长build 2是最好的方法(如果可能的话),但任何建议或指引我在正确的方向将不胜感激。我花了超过6个小时在互联网上无果而终。

回答

7

对此没有很好的支持。如果你真的想这样做,你可以用符号链接来探索一些hackery,试图使不同的口味有效地共享文件夹,但这会使源代码控制变得更加怪异,我不能确定它不会引起细微的问题在构建中。

我会鼓励你不要在构建系统中做很多诡计,因为从长远来看,它会让你的应用更难编写和维护,特别是因为目前IDE没有良好的设施用于处理跨产品口味的代码(例如,如果您重构代码,则无法在非活动产品风格中应用重构;您一次只能使用一种方式)。

一个更好的办法是采取很常见的东西构建2构建3并提取出来变成一个Android库模块,这对那些口味的依赖,但不是为构建1味道。不同的产品风格可以具有不同的依赖关系,并且该机制得到支持并运行良好。

+0

感谢您的支持。我现在就要离开它了。我真的不想做一个让代码库复杂化的黑客方式。感谢您的快速回复和答案! –

+0

你可以尝试使用'sourceSets'就像[在这个问题](http://stackoverflow.com/questions/20974524/with-two-res-directories-per-build-variant-gradle-stopped-tracking-changes-in -r) –

相关问题