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