Android 如何在我的应用程序中为两种风格保留一个Java文件,并为其他人排除它?

Android 如何在我的应用程序中为两种风格保留一个Java文件,并为其他人排除它?,android,gradle,android-flavors,Android,Gradle,Android Flavors,我有一个Android应用程序,比如说,有三种口味。第一个称为free。第二种风格称为付费。第三种风格称为b2bClient free和pro需要一个库(让它成为Google Analytics),并且,为了避免代码重复,helper类GoogleAnalyticsHelper围绕对Google Analytics的调用在主源集中。但是,b2b客户端不使用该库。为了减小b2bClientAPK的大小,我在Gradle中没有将库包含到它的依赖项中。当我运行assembleB2bClient时,它会

我有一个Android应用程序,比如说,有三种口味。第一个称为
free
。第二种风格称为付费。第三种风格称为
b2bClient

free
pro
需要一个库(让它成为Google Analytics),并且,为了避免代码重复,helper类
GoogleAnalyticsHelper
围绕对Google Analytics的调用在主源集中。但是,
b2b客户端
不使用该库。为了减小
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
行为


按照以下步骤仅包含特定风味的库。

创建一个库模块,如
分析
,其中包含
GoogleAnalyticsHelper
的代码。现在添加此
分析
库仅用于风味要求
分析
行为


遵循此操作仅包含特定版本的库。

为什么不创建一个包含GoogleAnalyticsHelper类的库,并将此库模块包含在三种版本中,但不包含在B2B客户端版本中。@SagarTrehan如果您将注释转换为答案,我将接受它发布的答案。请接受。为什么不创建一个包含以下内容的库它是GoogleAnalyticsHelper类,包含三种版本的库模块,但不包含在B2B客户端版本中。@SagarTrehan如果您将注释转换为答案,我将接受它发布的答案。请接受。