Android Studio:根据口味调试 类
Android Studio: debug classes depending on a flavour
我有一个具有三种不同风格和两种构建类型的应用程序。主模块定义了一些通用接口,每个 flavor 都实现了它们。 口味对应商店:google、亚马逊和三星。该应用建议一些 应用内购买,针对每种口味。
我实施了一些 调试 类 以简化 google 风格的集成测试。调试 类 实现 IInAppBillingService 和购买对话框的替代方法。现在的问题是 一些调试 类 依赖于风味 。我无法在没有编译错误的情况下切换到另一种风格。
我想保留这些测试 类,因为它们用于集成测试。此外,它们应该远离发布构建类型,以避免任何 debug/testing 代码出现在发布版本中。
我的问题是:如何定义 类 对风格的依赖,但在发布版本的构建过程中没有使用?
我没有使用直接在 flavor 文件夹中处理计费逻辑的 类,而是使用了另一个特定于 flavor 的 模块。
在google计费模块中,我保留了应用内购买中涉及的所有类。 特定于一种风格的每个模块都被导入相应的风格。这样,我就避免了混合使用不同风格的特定代码。
例如,在 build.gradle 文件中我有:
googleCompile project(path: ':inappbilling_google')
在 inappbilling_google 模块中,我通过 Google 应用内结算获得了所有 类 涉及的应用内购买。有一个 debug 文件夹用来保存所有在发布构建过程中不应该出现的 类。
我对这个解决方案非常满意,因为我清楚地将不同风格和构建类型的代码分开......直到我发现 Gradle 有一些限制。实际上,模块调试文件夹中的代码在编译期间不包含在内。这是一个 known issue (limitation) of Gradle and the Android Gradle plugin.
但是,Google 团队和 Gradle 团队已经着手解决这个问题,并宣布 solution to this,Android [=35= 的 2.5 版本]插件。
在不久的将来,仅使用 Android Gradle 插件就可以分离我们的代码。好消息!
您可能知道,您可以将特定于某种风格的代码和资产放在 src
下它自己的文件夹中。例如,您可以为每种口味创建 google
、amazon
和 samsung
等文件夹。您还可以为 类 创建 debug
和 release
文件夹以及特定于每种构建类型的资产。如果您的代码仅用于开发但不应该进入最终发布版本,这将很有用。
您可以更进一步,为构建类型和风格的任意组合创建文件夹,例如,googleDebug
或 amazonRelease
。
对于自动化测试,为单元测试创建一个 test
文件夹,在您的开发机器上本地 运行 或在设备上 运行 为仪器测试创建一个 androidTest
文件夹或模拟器。这些也可以与构建类型和风格结合使用,例如 androidTestDebug
、androidTestSamsung
或 androidTestSamsungDebug
.
所有 类 测试都应该在
下
我有一个具有三种不同风格和两种构建类型的应用程序。主模块定义了一些通用接口,每个 flavor 都实现了它们。 口味对应商店:google、亚马逊和三星。该应用建议一些 应用内购买,针对每种口味。
我实施了一些 调试 类 以简化 google 风格的集成测试。调试 类 实现 IInAppBillingService 和购买对话框的替代方法。现在的问题是 一些调试 类 依赖于风味 。我无法在没有编译错误的情况下切换到另一种风格。
我想保留这些测试 类,因为它们用于集成测试。此外,它们应该远离发布构建类型,以避免任何 debug/testing 代码出现在发布版本中。
我的问题是:如何定义 类 对风格的依赖,但在发布版本的构建过程中没有使用?
我没有使用直接在 flavor 文件夹中处理计费逻辑的 类,而是使用了另一个特定于 flavor 的 模块。
在google计费模块中,我保留了应用内购买中涉及的所有类。 特定于一种风格的每个模块都被导入相应的风格。这样,我就避免了混合使用不同风格的特定代码。
例如,在 build.gradle 文件中我有:
googleCompile project(path: ':inappbilling_google')
在 inappbilling_google 模块中,我通过 Google 应用内结算获得了所有 类 涉及的应用内购买。有一个 debug 文件夹用来保存所有在发布构建过程中不应该出现的 类。
我对这个解决方案非常满意,因为我清楚地将不同风格和构建类型的代码分开......直到我发现 Gradle 有一些限制。实际上,模块调试文件夹中的代码在编译期间不包含在内。这是一个 known issue (limitation) of Gradle and the Android Gradle plugin.
但是,Google 团队和 Gradle 团队已经着手解决这个问题,并宣布 solution to this,Android [=35= 的 2.5 版本]插件。
在不久的将来,仅使用 Android Gradle 插件就可以分离我们的代码。好消息!
您可能知道,您可以将特定于某种风格的代码和资产放在 src
下它自己的文件夹中。例如,您可以为每种口味创建 google
、amazon
和 samsung
等文件夹。您还可以为 类 创建 debug
和 release
文件夹以及特定于每种构建类型的资产。如果您的代码仅用于开发但不应该进入最终发布版本,这将很有用。
您可以更进一步,为构建类型和风格的任意组合创建文件夹,例如,googleDebug
或 amazonRelease
。
对于自动化测试,为单元测试创建一个 test
文件夹,在您的开发机器上本地 运行 或在设备上 运行 为仪器测试创建一个 androidTest
文件夹或模拟器。这些也可以与构建类型和风格结合使用,例如 androidTestDebug
、androidTestSamsung
或 androidTestSamsungDebug
.
所有 类 测试都应该在
下