仅适用于某种风味的方法和类

时间:2018-09-13 06:12:12

标签: android android-flavors android-flavordimension

说我有免费/付费的口味。

我想为付费功能调用方法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的导入和使用。
  • 所以这是我的问题,如何编码可用于付费风味的类?

1 个答案:

答案 0 :(得分:1)

尝试使用反射:

ClassLoader classLoader = YOUR_CLASS.class.getClassLoader();
Class specificClass = classLoader.loadClass("YOUR_CLASS_RELATIVE_PATH");
Object result;  //This is object as your method can return any datatype

Method method = specificClass.getMethod(methodName, ARGS_TO_YOUR_METHOD_IF_ANY.class); // if your arg is a custom class 
result = method.invoke(specificClass.newInstance(), ARGS_TO_YOUR_METHOD_IF_ANY)