【发布时间】:2018-09-13 06:12:12
【问题描述】:
说我有免费/付费的味道。
我想为付费功能调用方法checkSubscription()。该方法中引用的类仅可用于付费风味,因为我已将它们放在不同的模块中,该模块仅针对付费风味进行编译。
上面的事情可能吗?因为当我运行免费风味应用程序时,这不应该给 classNotFoundException。请指导我。
编辑
是的,我知道我可以在 Java 中以编程方式检查我的风格
if (BuildConfig.BUILD_VARIANT.equals("Your flavor name")){
//do something
}
或者通过定义一个buildConfigField。
我解释得更好
- 我的班级
Example.java在模块PaidLibrary 中,PaidLibrary 仅针对付费风格 编译。 - 现在我有一个类
ActivityExample.java,我在其中导入了Example.class。 - 我在使用
Example.java之前检查了当前的风格,但这会创建classNotFoundException,因为ActivityExample.java包含Example.java的导入和使用。 - 所以这是我的问题,即如何为可用于付费风味的课程编码?
【问题讨论】:
-
我不确定,如果您想查找已安装的版本是付费的还是免费的?如果是,您可以在 build.gradle 中创建一个 buildConfigField 作为您的风味定义中的参数,然后检索它们并在运行时检查它...
-
这只是一个例子,我没有付费或免费的味道,我也可以知道当前的味道,但这与我的问题无关。
-
我想可能在运行时你会发现你的风格并决定你是否必须调用 checksubscription 方法......也可以根据你的需要使用 Java 反射......在那里你可以创建一个模块而不是将其添加为依赖项..但获取Java类的相对路径并使用方法名称可以调用它..您需要一个示例来继续吗?
-
另一种解决方案是在您的两种口味包目录中创建相同的类
ActivityExample.java。free风格中的类不得包含Example.class。 -
@ישואוהבאותך 是的,这可能是一个很好的解决方案。
标签: android android-flavors android-flavordimension