How to set different applicationId for each flavor combination using flavorDimensions?

前端 未结 3 996
栀梦
栀梦 2020-11-30 02:10

I have and old android app that I am trying to migrate to the android gradle build system. The app is currently built in a multi project setup and published as four differen

3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-30 02:37

    I finally managed to solve this. I think the solution is elegant (although the actual code could most likely be written a lot nicer by someone with groovy knowledge).

    Solution for setting a specific applicationId for each combined flavor:

    flavorDimensions "price", "dataset"
    
    productFlavors {
        free { flavorDimension "price" }
        paid { flavorDimension "price" }
        dataset1 { flavorDimension "dataset" }
        dataset2 { flavorDimension "dataset" }
    }
    
    android.variantFilter { variant ->
        def flavorString = ""
        def flavors = variant.getFlavors()
        for (int i = 0; i < flavors.size(); i++) {
            flavorString += flavors[i].name;
        }
        if(flavorString.equalsIgnoreCase("freeDataset1")) {
            variant.getDefaultConfig().applicationId "com.beansys.freeappdataset1"
        }
        if(flavorString.equalsIgnoreCase("freeDataset2")) {
            variant.getDefaultConfig().applicationId "com.beansys.freedataset2"
        }
        if(flavorString.equalsIgnoreCase("paidDataset1")) {
            variant.getDefaultConfig().applicationId "com.beansys.dataset1paid"
        }
        if(flavorString.equalsIgnoreCase("paidDataset2")) {
            variant.getDefaultConfig().applicationId "com.beansys.mypaiddataset2"
        }
    }
    

提交回复
热议问题