我有一个项目,它有2个产品口味和自己的目录:
的build.gradle:
android { ... productFlavors { free { applicationId "com.sample.free" buildConfigField "boolean", "free", "true" } paid { applicationId "com.sample" buildConfigField "boolean", "free", "false" } } }
我有一个类(例如PaidOperationClass
),仅用于paid
风味.所以,我把那个类放在src/paid/java
目录下.而且我有另一个类(例如CommonClass
),两种口味都使用它.所以我把它放在src/main/java
目录下:
src/main/ --> has CommonClass src/free/ src/paid/ --> has PaidOperationClass
在CommonClass
我有一个方法,如:
if(!BuildConfig.FREE) { PaidOperationClass.doSomeStuff(); }
因此PaidOperationClass
引用(具有导入)但从未被免费构建使用.
如果我为paid
味道构建应用程序,一切都很完美.但是,如果我尝试构建它的free
味道,它会失败,因为没有找到引用但不必要的类.如何在没有代码(类/方法)复制的情况下解决这个问题(例如将假人PaidOperationClass
置于free
风味之下)?是否有任何gradle选项在构建时忽略了这种构建错误?
编辑: 我需要一个不需要代码复制的gradle解决方案.基于注释的自定义脚本可能会在编译时删除不必要的产品风格代码.