我有一个具有三种不同风格和两种构建类型的应用程序。主模块定义了一些通用接口,每个接口都实现了它们。 风味对应商店:google,amazon和samsung。该应用提出了一些应用内购买,特定于每种风格。
我实现了一些调试类来简化google风格的集成测试。调试类实现了IInAppBillingService和购买对话框的替代方案。现在的问题是某些调试类依赖于味道。我无法在没有编译错误的情况下切换到另一种风格。
我想保留这些测试类,因为它们用于集成测试。此外,它们应远离发布版本类型,以避免发布版本中出现任何调试/测试代码。
我的问题是:如何定义具有依赖性的类,但在构建发行版时不使用?
答案 0 :(得分:1)
正如您可能知道的那样,您可以将特定于代码的代码和资产放在src
下的自己的文件夹中。例如,您可以为每种风格添加google
,amazon
和samsung
等文件夹。您还可以为特定于每种构建类型的类和资产创建debug
和release
个文件夹。如果您的代码仅用于开发但不应该进入最终版本,那么这很有用。
您可以更进一步,为构建类型和风格的任意组合创建文件夹,例如googleDebug
或amazonRelease
。
对于自动化测试,请为您在开发计算机上本地运行的单元测试创建一个test
文件夹,或者为设备或模拟器上运行的检测测试创建一个androidTest
文件夹。这些也可以与构建类型和风格组合,例如androidTestDebug
,androidTestSamsung
或androidTestSamsungDebug
。
所有测试课程都应该在
之下答案 1 :(得分:0)
我没有使用直接处理flavor文件夹中的结算逻辑的类,而是使用了另一个特定于风味的模块。
在Google结算模块中,我保留了应用内购买所涉及的所有课程。 导入特定于风味的每个模块以用于相应的风格。这样,我就避免混合特定于不同风格的代码。
例如,在build.gradle文件中我有:
googleCompile项目(路径:':inappbilling_google')
在inappbilling_google模块中,我通过Google应用内结算获得了应用内购买所涉及的所有课程。有一个调试文件夹可以保留在发布版本构建过程中不应出现的所有类。
我对这个解决方案非常满意,因为我清楚地将不同风格和构建类型的代码分开......直到我发现Gradle有一些限制。实际上,在编译期间不包括模块的调试文件夹中存在的代码。这是Gradle的known issue(限制)和Android Gradle plugin。
然而,谷歌团队和Gradle团队已经开展了此项工作,并宣布了solution to this,其中包含Android Gradle插件的2.5版本。
在不久的将来,只能使用Android Gradle插件分隔我们的代码。好消息!