Prefazione: questa non è una domanda su come utilizzare i tipi di build e le varianti di prodotto in un'app Android. Comprendo i concetti di base coinvolti. Questa domanda riguarda maggiormente il tentativo di capire quale configurazione deve essere specificata in un tipo di build, quale configurazione deve essere specificata in un sapore del prodotto e se è effettivamente necessaria una distinzione.
Questa settimana, ho imparato di più sulla configurazione gradle per le app Android. Inizialmente pensavo di avere una buona padronanza dei tipi di build rispetto ai gusti dei prodotti, ma più mi immergevo nella documentazione e più mi rendevo conto che la distinzione tra i due non mi era affatto chiara.
Poiché esiste una gerarchia ben definita (nel senso che le proprietà specificate nei tipi di build hanno la precedenza su quelle specificate negli aromi di prodotto), non capisco perché sia necessario distinguere tra tipi di build e aromi di prodotto. Non sarebbe meglio unire tutte le proprietà e tutti i metodi nell'oggetto DSL di sapore del prodotto e quindi trattare il tipo di build come una dimensione di sapore (predefinita)?
Alcuni esempi concreti che hanno portato alla mia confusione:
La
signingConfig
proprietà può essere impostata sia nei tipi di build che nei gusti del prodotto ... maminifyEnabled
(e, suppongoshrinkResources
,?) Può essere configurata solo nei tipi di build.applicationId
può essere specificato solo nei gusti dei prodotti ... eapplicationIdSuffix
può essere specificato solo nei tipi di build !?
Le domande reali :
Dati gli esempi precedenti: esiste una chiara distinzione tra i ruoli dei tipi di build e quelli dei prodotti?
In tal caso, qual è il modo migliore per capirlo?
In caso contrario, il piano è infine quello di unire tipi di build e sapori del prodotto in un singolo oggetto DSL configurabile?
applicationId
, per esempio.