Vorwort: Dies ist keine Frage zur Verwendung von Build-Typen und Produktvarianten in einer Android-App. Ich verstehe die grundlegenden Konzepte. Bei dieser Frage geht es eher darum zu verstehen, welche Konfiguration in einem Build-Typ angegeben werden soll, welche Konfiguration in einer Produktvariante angegeben werden soll und ob tatsächlich eine Unterscheidung erforderlich ist.
Diese Woche habe ich mehr über die Gradle-Konfiguration für Android-Apps gelernt. Anfangs dachte ich, ich hätte einen guten Überblick über Build-Typen und Produktaromen, aber je tiefer ich in die Dokumentation einstieg, desto mehr wurde mir klar, dass mir die Unterscheidung zwischen beiden überhaupt nicht klar war.
Da es eine genau definierte Hierarchie gibt (in dem Sinne, dass die in Build-Typen angegebenen Eigenschaften Vorrang vor den in Produktvarianten angegebenen haben), verstehe ich nicht, warum überhaupt zwischen Build-Typen und Produktvarianten unterschieden werden muss. Wäre es nicht besser, alle Eigenschaften und Methoden in das DSL-Objekt für die Produktvariante einzufügen und dann den Build-Typ als (Standard-) Flavour-Dimension zu behandeln?
Einige konkrete Beispiele, die zu meiner Verwirrung geführt haben:
Die
signingConfig
Eigenschaft kann sowohl in Build-Typen als auch in Produktvarianten festgelegt werden ... aberminifyEnabled
(und ich nehme an ,shrinkResources
?) Kann nur in Build-Typen konfiguriert werden.applicationId
kann nur in Produktvarianten angegeben werden ... undapplicationIdSuffix
kann nur in Build-Typen angegeben werden!?
Die eigentliche Frage (n) :
In Anbetracht der obigen Beispiele: Gibt es eine klare Unterscheidung zwischen den Rollen von Build-Typen und Produktaromen?
Wenn ja, wie kann man das am besten verstehen?
Wenn nicht, ist geplant, Build-Typen und Produktvarianten schließlich in einem einzigen konfigurierbaren DSL-Objekt zusammenzuführen?
applicationId
.