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