(Android) 不同风格的运行时依赖管理
(Android) Runtime dependency managment with different flavors
我有一个 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,但这似乎是一个重大的 hack。
任何输入将不胜感激:)
This flavor will not include (for legal reasons) some of the dependencies in my main flavor.
我不知道您可以轻松地按风格排除依赖项。您可以使用 flavornameCompile
(其中 flavorname
是您的风味名称)按风味 添加 依赖项。
How will this affect all the places I have: import package.which.is.only.available.sometimes
如果它在您的 main
源集中,您的代码将无法编译,因为 classes 将不存在。
How do I test for the existence of the package when I try to call it's methods? I guess I could just use it and catch any CallNotFundExceptions, but that seems like a major hack.
将代码移到一个单独的风格中。您的 main
源集将包含真正与两种分发方案相同的代码,不引用条件依赖项。一种风格会包含依赖项和使用它们的代码;另一种味道不会。
例如,假设您的两个分发场景是 Play 商店和从您的网站直接下载,并且条件依赖是来自 Play 服务框架的应用内购买 (IAP) 内容。您将拥有 google
风格的依赖项 (googleCompile
),并且其源集将使用 IAP API。你会有一个单独的 standard
风格来做其他事情(例如,使用 PayPal)。 main
源集,每当它需要做一些与应用程序内购买相关的事情时,就会委托给 InAppPurchaseStrategy
class。 class 将有两个单独的实现,每个版本一个(none 在 main
本身),调整为使用适合该版本的支付方式。
我有一个 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,但这似乎是一个重大的 hack。
任何输入将不胜感激:)
This flavor will not include (for legal reasons) some of the dependencies in my main flavor.
我不知道您可以轻松地按风格排除依赖项。您可以使用 flavornameCompile
(其中 flavorname
是您的风味名称)按风味 添加 依赖项。
How will this affect all the places I have:
import package.which.is.only.available.sometimes
如果它在您的 main
源集中,您的代码将无法编译,因为 classes 将不存在。
How do I test for the existence of the package when I try to call it's methods? I guess I could just use it and catch any CallNotFundExceptions, but that seems like a major hack.
将代码移到一个单独的风格中。您的 main
源集将包含真正与两种分发方案相同的代码,不引用条件依赖项。一种风格会包含依赖项和使用它们的代码;另一种味道不会。
例如,假设您的两个分发场景是 Play 商店和从您的网站直接下载,并且条件依赖是来自 Play 服务框架的应用内购买 (IAP) 内容。您将拥有 google
风格的依赖项 (googleCompile
),并且其源集将使用 IAP API。你会有一个单独的 standard
风格来做其他事情(例如,使用 PayPal)。 main
源集,每当它需要做一些与应用程序内购买相关的事情时,就会委托给 InAppPurchaseStrategy
class。 class 将有两个单独的实现,每个版本一个(none 在 main
本身),调整为使用适合该版本的支付方式。