处理构建变体中的微小差异
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) {
}
我有一个具有 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) {
}