2015-01-12 10 views
9

Nella mia app corrente ho 2 build, li chiamiamo build 1 e build 2. Capisco che due sapori possono condividere codice comune/risorse, ma possono anche avere il codice e le risorse separato come il seguente:Android Studio - Can flavors può condividere il codice con altri sapori?

Two Flavours Diargram

Quello che sto cercando di fare è espandere build 2 in modo che condivide un codice con un altro build (es. build 3). O la condivisione del codice come il seguente:

Two Flavours Sharing Code

questo sarebbe build2 e costruire 3 condivisione del codice/risorse pur avendo anche la possibilità di avere il proprio set di codici unici. Oppure:

Build 3 Extending Build 2

Qui, build 3 sta estendendo build 2 in modo che tutto il codice e le risorse da build 2 sono disponibili sia in costruisce ma build 3 può anche avere le sue uniche codice/risorse.

Penso che estendere build 2 sia il modo migliore (se è possibile) ma qualsiasi consiglio o indicarmi nella giusta direzione sarebbe molto apprezzato. Ho passato più di 6 ore a perlustrare internet senza alcun risultato.

risposta

7

Non c'è un buon supporto per questo. Se volessi davvero farlo, potresti esplorare alcuni hackery con i link simbolici per cercare di far dividere in modo diverso i vari tipi di cartelle, ma questo renderà le cose un po 'più bizzarre con il controllo del codice sorgente, e non posso essere sicuro che non causerà problemi sottili nella build.

Io ti incoraggerei a non provare a fare un sacco di trucchi nel sistema di build, perché a lungo termine renderà la tua app più difficile da scrivere e mantenere, soprattutto perché attualmente l'IDE non ha buone strutture per gestire il codice attraverso i sapori del prodotto (ad esempio se si effettua il refactoring del codice, non c'è modo di applicare il refactoring su un aroma di prodotto non attivo, si può lavorare solo con uno alla volta).

Un approccio migliore sarebbe quello di prendere la roba che è comune a Build 2 e Build 3 ed estrarlo fuori in un modulo Libreria Android che è una dipendenza per quei sapori, ma non per il Build 1 sapore. Differenti gusti di prodotto possono avere dipendenze diverse e tale meccanismo è supportato e funziona bene.

+0

Grazie per questo. Lo lascerò solo per ora. Non voglio davvero fare un modo di hacker che complicherà il codice base. Grazie per la risposta rapida e la risposta! –

+0

potresti provare a usare 'sourceSets' come [in questa domanda] (http://stackoverflow.com/questions/20974524/with-two-res-directories-per-build-variant-gradle-stopped-tracking-changes-in -r) –

Problemi correlati