我有一个Android应用程序,比如说,有三种口味。第一个称为free
。第二种风格称为付费。第三种风格称为b2bClient
。
free
和pro
需要一个库(让它成为Google Analytics),并且,为了避免代码重复,Helper类GoogleAnalyticsHelper
围绕对Google Analytics的调用在主源代码集中。但是b2bClient
不使用库。为了减小b2bClient
APK的大小,我不将库包含在Gradle中的依赖项中。当我运行assembleB2bClient
时,它会导致编译错误,这是显而易见的(构建系统没有来自com.google.android.gms.analytics
的类。
当flavor为b2bClient
时,我尝试从源代码集中排除GoogleAnalyticsHelper
,如下所示:
sourceSets {
main {
android.productFlavors.all { flavor ->
if (flavor.name == "b2bClient") {
java.exclude("**/GoogleAnalyticsHelper.java")
}
}
}
}
那也没用。同样的错误。是否可以从主源集中排除一个特定风味的类?
创建一个库模块,比如Analytics
,其中包含GoogleAnalyticsHelper
的代码。现在添加此Analytics
库,仅用于需要Analytics
行为的味道。
按照此链接仅包含特定风味的库。