我有一个具有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'
}
}
哪种解决方案会更好?并在上述运行时检查风味是否考虑到污染了代码?
答案 0 :(得分:3)
您可以在build.gradle
buildConfigField "boolean", "showAds", 'true'
然后使用如下所示的内容(您的主要src文件仍将用于添加的其他样式):
if (BuildConfig.showAds) {
}