Android studio Gradle:如何在buildTypes中为多维风格设置signingConfig

Android studio Gradle:如何在buildTypes中为多维风格设置signingConfig,android-studio,gradle,android-productflavors,android-flavordimension,Android Studio,Gradle,Android Productflavors,Android Flavordimension,在Android Studio(v2.2)中同步成绩文件时,我收到以下错误日志: 背景: 我有一个2个版本的应用程序(例如freeApp和paidApp),用于3个开发环境(例如开发、uat和生产)。我将app.gradle文件设置为: flavorDimensions "ver", "env" productFlavors { freeApp { dimension "ver" ... } paidApp { dime

在Android Studio(v2.2)中同步成绩文件时,我收到以下错误日志:


背景:

我有一个2个版本的应用程序(例如freeApp和paidApp),用于3个开发环境(例如开发、uat和生产)。我将app.gradle文件设置为:

flavorDimensions "ver", "env"

productFlavors {
    freeApp {
        dimension "ver"
        ...
    }
    paidApp {
        dimension "ver"
        ...
    }

    dev {
        dimension "env"
        ...
    }
    uat {
        dimension "env"
        ...
    }
    production {
        dimension "env"
        ...
    }
}
productFlavors {
    freeAppDev {
        ...
    }
    freeAppUat {
        ...
    }
    freeAppProduction {
        ...
    }

    paidAppDev {
        ...
    }
    paidAppUat {
        ...
    }
    paidAppProduction {
        ...
    }
}


buildTypes {
    alpha {
        productFlavors.freeAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.freeAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.freeAppProduction.signingConfig signingConfigs.customReleaseKey

        productFlavors.paidAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.paidAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.paidAppProduction.signingConfig signingConfigs.customReleaseKey
    }
    ...
}
对于BuildType,我创建了一个定制的调试类型“alpha”,这样我就可以为自己的目的设置signingConfig:

buildTypes {
    alpha {
        productFlavors.freeAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.freeAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.freeAppProduction.signingConfig signingConfigs.customReleaseKey

        productFlavors.paidAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.paidAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.paidAppProduction.signingConfig signingConfigs.customReleaseKey
    }
    ...
}
custom1DebugKey、custom2DebugKey、customReleaseKey都是签名配置,这不是重点,所以我跳过粘贴代码

我想问一下,当productFlavors中有多个维度时,如何才能在“productFlavors.XXX.signingConfig”中为XXX获得正确的名称。谢谢


另外,要了解更多信息,我可以通过如下方式修改gradle文件:

flavorDimensions "ver", "env"

productFlavors {
    freeApp {
        dimension "ver"
        ...
    }
    paidApp {
        dimension "ver"
        ...
    }

    dev {
        dimension "env"
        ...
    }
    uat {
        dimension "env"
        ...
    }
    production {
        dimension "env"
        ...
    }
}
productFlavors {
    freeAppDev {
        ...
    }
    freeAppUat {
        ...
    }
    freeAppProduction {
        ...
    }

    paidAppDev {
        ...
    }
    paidAppUat {
        ...
    }
    paidAppProduction {
        ...
    }
}


buildTypes {
    alpha {
        productFlavors.freeAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.freeAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.freeAppProduction.signingConfig signingConfigs.customReleaseKey

        productFlavors.paidAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.paidAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.paidAppProduction.signingConfig signingConfigs.customReleaseKey
    }
    ...
}

因此,看起来您仅根据环境分配签名密钥:

productFlavors.freeAppDev.signingConfig signingConfigs.custom1DebugKey
productFlavors.freeAppUat.signingConfig signingConfigs.custom2DebugKey
productFlavors.freeAppProduction.signingConfig signingConfigs.customReleaseKey

productFlavors.paidAppDev.signingConfig signingConfigs.custom1DebugKey
productFlavors.paidAppUat.signingConfig signingConfigs.custom2DebugKey
productFlavors.paidAppProduction.signingConfig signingConfigs.customReleaseKey
如果是这样的话,你可以用它:

productFlavors.dev.signingConfig signingConfigs.custom1DebugKey
productFlavors.uat.signingConfig signingConfigs.custom2DebugKey
productFlavors.production.signingConfig signingConfigs.customReleaseKey

请注意,
productFlavors
将包含每种产品风格(在您的案例中:freeApp、paidApp、dev、uat、production),但不会像您尝试使用它们那样基于维度将它们组合起来。

嗨,我面临着同样的问题。你成功了吗?如果是,请输入您的解决方案。