我正在使用Gradle作为Android应用程序的构建系统。
我的目标是将一个值(包名)用作applicationId
:
productFlavors {
orange {
applicationId "com.fruits.android.orange"
// ...
但是也要通过BuildConfig
来公开它,以便Java代码可以访问它。
这个访问必须来自于口味之外(即,应用程序的免费版本需要知道付费版本的包名称,以便可以提示用户在Play商店升级)。
所以我想做这样的事情:
productFlavors {
orange {
applicationId orangeProPackage
// ...
buildConfigField 'String', 'ORANGE_PRO_PACKAGE', "$orangeProPackage" // ?
我不确定如何定义orangeProPackage
,使其在整个build.gradle中可见且不会破坏脚本。
由于有几种不同的版本,如果我能以某种方式将所有这些常量分组,那就最好了(我猜?):
def proPackages = [
orange: "..."
apple: "..."
banana: "..."
]
然后以清晰且具有描述性的方式引用它们,例如proPackages.orange
等。
问题是如何实现这一点?
这不是Is it possible to declare a variable in Gradle usable in Java?的重复。
我已经看过那个问题(和其他一些问题)。我知道如何声明buildConfigFields,我已经有了很多。我的问题是关于如何将相同的值作为buildConfigField
和applicationId
进行重用。
buildConfigField
和applicationId
。 - Konrad Morawski