有没有一种方法可以合并来自不同维度的数据?

时间:2020-05-02 21:15:38

标签: android android-gradle-plugin android-flavors android-flavordimension

我为同一个应用制作了4种不同的样式,并将它们全部作为免费应用发布在Play商店中。

现在,我为它们中的每一个制作一个付费版本,为了实现这一点,我创建了2种新口味:免费和付费,并且这些口味与4个应用程序中的一个不同。这4个应用具有“版本”维度,免费/付费版本具有“模式”维度。

我要弄清楚如何为每个版本/模式对设置不同的版本代码和名称,例如:flavourAFree-> versionCode 1 / flavourAPaid-> versionCode 2

这是我的代码:

flavorDimensions "version", "mode"

productFlavors {
    flavourA {
        dimension "version"
        ...
    }

    flavourB {
        dimension "version"
        ...
    }

    flavourC {
        dimension "version"
        ...
    }

    flavourD {
        dimension "version"
        ...
    }

    free {
        dimension "mode"
    }

    paid {
        dimension "mode"
    }
}

我要实现的示例(不完全是这些值):

flavourAFree {
    versionCode 1
    versionName "1.0"
}

flavourAPaid {
    versionCode 4
    versionName "2020.2.0"
}

当我尝试同步Gradle脚本时,出现以下错误:

配置项目':app'时发生问题。 风味'flavorA'没有风味尺寸。

有没有办法做我想做的事?

1 个答案:

答案 0 :(得分:0)

android article

中描述了您需要做的事情
android {
    defaultConfig {
        versionCode 13
        versionName "2020.2"

    }

flavorDimensions "version", "mode"

productFlavors {
    flavourA {
        dimension "version"
        ...
    }

    flavourB {
        dimension "version"
        ...
    }

    flavourC {
        dimension "version"
        ...
    }

    flavourD {
        dimension "version"
        ...
    }

    free {
        dimension "mode"
        versionCode android.defaultConfig.versionCode
        versionName android.defaultConfig.versionName + ".3"
    }

    paid {
        dimension "mode"
        versionCode android.defaultConfig.versionCode - 12
        versionName android.defaultConfig.versionName + ".0"
    }
}

我不知道这是否是您要的东西,但它会创建:

  • 带有versionCode = 13versionName = "2020.2.3"的flavourAFree
  • 带有versionCode = 13versionName = "2020.2.3"的flavourBFree
  • 通过versionCode = 1versionName = "2020.2.0"的flavourAPaid
  • 通过versionCode = 1versionName = "2020.2.0"
  • 进行flavourBPaid

有关更多信息,我建议this article