我有一个项目,其中包含两个产品风味并带有它们自己的目录:
build.gradle:
android {
...
productFlavors {
free {
applicationId "com.sample.free"
buildConfigField "boolean", "free", "true"
}
paid {
applicationId "com.sample"
buildConfigField "boolean", "free", "false"
}
}
}
我有一个类(例如PaidOperationClass
),它只在paid
flavor中使用。因此,我将该类放在src/paid/java
目录下。我还有另一个类(例如CommonClass
),它被两种flavor都使用。所以我把它放在src/main/java
目录下:
src/main/ --> has CommonClass
src/free/
src/paid/ --> has PaidOperationClass
在CommonClass
中,我有一个如下所示的方法:
if(!BuildConfig.FREE) {
PaidOperationClass.doSomeStuff();
}
因此,PaidOperationClass
被引用(具有导入),但未被免费版本使用。
如果我为付费版本构建应用程序,一切正常。 但是,如果我尝试为免费版本构建应用程序,则构建失败,因为找不到被引用但不必要的类。 如何在没有代码(类/方法)复制的情况下解决此问题(例如在free
口味下放置虚拟的PaidOperationClass
)? 在构建时是否有任何gradle选项可以忽略此类构建错误?
编辑:我需要一个无需代码复制的gradle解决方案。 可能是基于注释的自定义脚本,它会在编译时删除产品风味的不必要代码。