处理构建变体中的微小差异

Handling minor differences in build variants

我有一个具有 2 种产品风格的应用程序,因此有 4 个构建变体:

1) freeDebug
2) freeRelease
3) paidDebug
4) paidRelease

我有一个包含广告的 Fragment,需要 2 行才能实现:

@Nullable @BindView (R.id.bottomsheet_ad) AdView mAdView;
mAdView.loadAd(adRequest);

所以因为有 2 行,我必须维护 2 个或更多文件。

我正在考虑 2 个解决方案:

1) 在运行时检查味道:

if (BuildConfig.FLAVOR.equals("flavor123")) {
    ...
}

2) 按照 here:

的解释,在 gradle 中创建一个共同的风味和点需要的变体
android {
    ...
    productFlavors {
        flavorOne {
            ...
        }
        flavorTwo {
            ...
        }
        flavorThree {
            ...
        }
        flavorFour {
            ...
        }
    }
    sourceSets {
        flavorOne.java.srcDir 'src/common/java'
        flavorTwo.java.srcDir 'src/common/java'
        flavorThree.java.srcDir 'src/common/java'
    }
}

哪种解决方案更好?并且像上面那样在运行时检查味道是否被认为是污染代码?

您可以在 build.gradle

中添加类似以下内容的适当风味
buildConfigField "boolean", "showAds", 'true'

然后像下面这样使用(您的主要 src 文件仍将用于您添加的其他口味):

if (BuildConfig.showAds) {

}