Prefácio: esta não é uma pergunta sobre como usar tipos de construção e sabores de produtos em um aplicativo Android. Eu entendo os conceitos básicos envolvidos. Esta pergunta é mais sobre como tentar entender qual configuração deve ser especificada em um tipo de construção, qual configuração deve ser especificada em um tipo de produto e se alguma distinção é realmente necessária.
Nesta semana, aprendi mais sobre a configuração do gradle para aplicativos Android. Inicialmente, pensei que tinha uma boa capacidade de lidar com tipos de compilação versus tipos de produtos, mas quanto mais aprofundava a documentação, mais percebia que a distinção entre os dois não estava clara para mim.
Como existe uma hierarquia bem definida (no sentido de que as propriedades especificadas nos tipos de construção têm precedência sobre as especificadas nos tipos de produto), não entendo por que é necessário distinguir entre tipos de construção e tipos de produto. Não seria melhor mesclar todas as propriedades e métodos no objeto DSL de sabor do produto e apenas tratar o tipo de construção como uma dimensão de sabor (padrão)?
Alguns exemplos concretos que levaram à minha confusão:
A
signingConfig
propriedade pode ser definida nos tipos de construção e nos sabores do produto ... masminifyEnabled
(e, presumoshrinkResources
,?) Só pode ser configurada nos tipos de construção.applicationId
só pode ser especificado nos tipos de produto ... eapplicationIdSuffix
só pode ser especificado nos tipos de construção !?
A (s) questão (s) real (is) :
Dados os exemplos acima: existe uma distinção clara entre os papéis dos tipos de construção versus os sabores dos produtos?
Em caso afirmativo, qual é a melhor maneira de entendê-lo?
Caso contrário, o plano é eventualmente mesclar tipos de construção e sabores de produtos em um único objeto DSL configurável?
applicationId
, por exemplo.