说我有免费/付费的口味。
我想为付费功能调用方法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
的导入和使用。答案 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)