我有一个Android应用程序。
我想定义一下我的应用程序的味道。这种味道将不包括(出于法律原因)我的主要味道中的一些依赖。 Gradle不仅可以做到这一点,而且似乎是(more or less) the main reason Google adopted Gradle for Android in the first place
然而,我不明白的是我如何在运行时处理这些缺少的依赖项。这将如何影响我所拥有的所有地方:
import package.which.is.only.available.sometimes.
当我尝试调用它的方法时,如何测试包的存在?我想我可以使用它并捕获任何CallNotFundExceptions,但这似乎是一个主要的黑客攻击。
任何输入将不胜感激:)
答案 0 :(得分:2)
这种味道不会包括(出于法律原因)我主要口味中的一些依赖。
我不知道您可以通过味道轻松排除依赖关系。您可以使用flavornameCompile
(其中flavorname
是您的风味名称)按风格添加依赖项。
这将如何影响我拥有的所有地方:
import package.which.is.only.available.sometimes
如果它在您的main
源集中,您的代码将无法编译,因为类将不存在。
当我尝试调用它的方法时,如何测试包的存在?我想我可以使用它并捕获任何CallNotFundExceptions,但这似乎是一个主要的黑客攻击。
将代码移动到单独的风格中。您的main
源集将包含与两个分发方案完全相同的代码,而不引用条件依赖项。一种风格将包含依赖项和使用它们的代码;另一种味道不会。
例如,假设您的两个分发方案是Play商店并从您的网站直接下载,条件相关性是来自Play服务框架的应用内购买(IAP)内容。您将拥有带有依赖项(google
)的googleCompile
风格,其源集将使用IAP API。您将有一个单独的standard
风格,可以做其他事情(例如,使用PayPal)。 main
源集,只要需要执行与应用内购买相关的操作,就会委托给InAppPurchaseStrategy
类。该类将有两个单独的实现,每个风格一个(main
本身没有),调整为使用适合该风格的支付内容。