2015-07-23 13 views
6

Ho 3 sapori esclusa la main uno:Gradle - ereditare prodotto sapore

productFlavors { 
    xxx { 
     applicationId 'com.xxx' 
    } 
    yyy { 
     applicationId 'com.yyy' 
    } 
    zzz { 
     applicationId 'com.zzz' 
    } 
} 

quanto ho capito, questi sapori dei prodotti ereditano main s' risorse e sembra qualcosa di simile:

 +------->xxx 
     |   
main----+------->yyy 
     |   
     +------->zzz 

Così quando costruisco xxx, Gradle raggruppa le cose da src/main e dalle cartelle src/xxx.

Ora, ho bisogno di simile a questa:

 +------->xxx   
     |      
main----+------->yyy------->zzz 

In altre parole, voglio zzz usare yyy 's risorse così come main' s. Gradle può farlo?

+0

Possibile duplicato di [Avere un sapore del prodotto essere figlio di un altro] (http://stackoverflow.com/questions/25022249/have-a-product-flavor-be-a-child-of-another) – mixel

+0

Vedere la mia risposta qui http://stackoverflow.com/a/41903586/746347 – mixel

risposta

2

Potrebbe dipendere da cosa esattamente "sostituire" in zzz. Nel mio progetto ho bisogno anche dell'ereditarietà del prodotto. Ma avevo bisogno di sovrascrivere solo manifest. Ho creato directory per zzz con personalizzati AndroidManifest.xml e cambiato altri percorsi zzz src a yyy in build.gradle:

sourceSets { 
    zzz.java.srcDirs = ['src/yyy/java'] 
    zzz.res.srcDirs = ['src/yyy/res'] 
    ... 
    ... 
} 

productFlavors { 
    xxx {} 
    yyy {} 
    zzz {} 
} 

P.S. Creata una richiesta di funzionalità per questo https://code.google.com/p/android/issues/detail?id=183350

0

Ho risposto a questo in another thread. Mi limiterò a copiare e incollare la mia risposta qui, sperando che possa esserti utile.

Stavo cercando una cosa simile in gradle e ho trovato Multi-flavor variants. Ho un app che dovrebbe avere le versioni A e B, e ogni versione ha dev e ambienti pro, quindi ho finito con questo nel mio Gradle:

flavorDimensions 'app', 'environment' 

productFlavors { 
    versionA { 
     flavorDimension 'app' 
    } 
    versionB { 
     flavorDimension 'app' 
    } 
    pre { 
     flavorDimension 'environment' 
    } 
    pro { 
     flavorDimension 'environment' 
    } 
} 

E nei miei varianti di build ho versionAPreDebug, versionAPreRelease, versionBPreDebug , versionBPreRelease, ecc. Penso che quello che ti serve sia qualcosa del genere.

Problemi correlati