Gradle: Как установить signatureConfig в buildTypes для многомерных разновидностей

При синхронизации файла оценки в Android Studio (v2.2) я получил следующий журнал ошибок:

Error:(184, 0) Could not get unknown property 'freeAppDev' for ProductFlavor container.


Фон:

У меня есть приложение из 2 версий (например, freeApp & paidApp) для 3 сред разработки (например, dev, uat и production). Я установил свой файл app.gradle следующим образом:

flavorDimensions "ver", "env"

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

    dev {
        dimension "env"
        ...
    }
    uat {
        dimension "env"
        ...
    }
    production {
        dimension "env"
        ...
    }
}

Для buildTypes я создал настраиваемый тип отладки "alpha", чтобы я мог установить signatureConfig для своих собственных целей:

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 - это signatureConfigs, но это не главное, поэтому я просто пропускаю вставку кода.

Я хотел бы спросить, как я могу получить правильное имя для XXX в "productFlavors.XXX.signingConfig", когда в productFlavors более одного измерения. Благодарю.


PS Для получения дополнительной информации, он отлично работает для меня, изменив файл Gradle следующим образом:

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
    }
    ...
}

1 ответ

Похоже, вы назначаете ключ подписи только на основании окружения:

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), но не будет объединять их в зависимости от измерения, как вы пытаетесь их использовать.

Другие вопросы по тегам