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

时间:2019-07-01 19:41:45

标签: android android-gradle build.gradle

我有一个具有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)创建常见的风味,并在gradle中指定所需的变体,如here所述:

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'
    }
}

哪种解决方案会更好?并在上述运行时检查风味是否考虑到污染了代码?

1 个答案:

答案 0 :(得分:3)

您可以在build.gradle

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

然后使用如下所示的内容(您的主要src文件仍将用于添加的其他样式):

if (BuildConfig.showAds) {

}