Prefacio: no se trata de cómo usar tipos de compilación y sabores de productos en una aplicación de Android. Entiendo los conceptos básicos involucrados. Esta pregunta trata más acerca de tratar de comprender qué configuración debe especificarse en un tipo de compilación, qué configuración debe especificarse en un sabor de producto y si realmente es necesaria alguna distinción.
Esta semana, he estado aprendiendo más sobre la configuración de gradle para aplicaciones de Android. Inicialmente pensé que tenía un buen manejo de los tipos de compilación frente a los sabores de productos, pero cuanto más profundicé en la documentación, más me di cuenta de que la distinción entre los dos no estaba clara para mí.
Dado que existe una jerarquía bien definida (en el sentido de que las propiedades especificadas en los tipos de compilación tienen prioridad sobre las especificadas en los sabores de productos), no entiendo por qué es necesario distinguir entre los tipos de compilaciones y los sabores de productos. ¿No sería mejor fusionar todas las propiedades y métodos en el objeto DSL de sabor del producto y luego tratar el tipo de compilación como una dimensión de sabor (predeterminada)?
Algunos ejemplos concretos que llevaron a mi confusión:
La
signingConfig
propiedad se puede establecer tanto en tipos de compilación como en sabores de productos ... perominifyEnabled
(y, supongoshrinkResources
,?) Solo se puede configurar en tipos de compilación.applicationId
¿solo se puede especificar en sabores de productos ... yapplicationIdSuffix
solo se puede especificar en tipos de compilación?
La (s) pregunta (s) real (es) :
Dados los ejemplos anteriores: ¿existe una clara distinción entre los roles de los tipos de compilación y los sabores de los productos?
Si es así, ¿cuál es la mejor manera de entenderlo?
Si no es así, ¿el plan es fusionar eventualmente los tipos de compilación y los sabores de productos en un único objeto DSL configurable?
applicationId
, por ejemplo.