Biblioteca pubblicazione
Per impostazione predefinita una biblioteca pubblica solo la sua variante di rilascio. Questa variante verrà utilizzata da tutti i progetti che fanno riferimento alla libreria, indipendentemente dalla variante da loro stessi creata. Questa è una limitazione temporanea dovuta alle limitazioni di gradazione che stiamo lavorando per la rimozione.
È possibile controllare quale variante viene pubblicato con
android { defaultPublishConfig "debug" }
Si noti che questo nome di configurazione pubblicazione fa riferimento al nome completo variante. Il rilascio e il debug sono applicabili solo quando non ci sono aromi . Se si voleva cambiare la variante pubblicato predefinita mentre utilizzando sapori, si scrive:
android {defaultPublishConfig "flavor1Debug" }
E 'anche possibile pubblicare tutte le varianti di una biblioteca. Siamo che pianifica di consentire questo mentre si utilizza una normale dipendenza da progetto a progetto (come mostrato sopra), ma questo non è possibile in questo momento a causa di alle limitazioni in Gradle (stiamo lavorando per risolvere anche quelle). La pubblicazione di tutte le varianti non è abilitata per impostazione predefinita. Per consentire loro:
android {publishNonDefault true }
E 'importante rendersi conto che la pubblicazione di molteplici varianti significa editrici più file AAR, invece di un singolo AAR contenente molteplici varianti. Ogni confezione di aar contiene un'unica variante. Pubblicare una variante significa renderlo disponibile come output artefatto del progetto Gradle. Può quindi essere utilizzato sia quando si pubblica su un repository di Maven, o quando un altro progetto crea una dipendenza sul progetto di libreria..
Gradle ha un concetto di inadempienza artefatto" Questo è quello che è usato quando si scrive:
compile project(':libraries:lib2')
Per creare una dipendenza da un altro artefatto pubblicato, è necessario specificare quale usare:
dependencies {
flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
}
. Importante: si noti che la configurazione pubblicato è una variante completa, tra cui il tipo di generazione, e deve essere fatto riferimento come tale Imp ortant: abilitando la pubblicazione di non default, il plugin di pubblicazione Maven pubblicherà queste varianti aggiuntive come pacchetti extra (con classificatore). Ciò significa che non è realmente compatibile con la pubblicazione su un repository di Maven. . È necessario o pubblicare una singola variante in un repository OPPURE abilitare la pubblicazione di tutte le config per le dipendenze tra progetti.
Questo non funziona. – dragostis
Questo esempio funziona per te in "0.2.1'? Con la sintassi corretta, ovviamente. 'android.productFlavors' nella libreria e' compile project (': mylibrary') 'nel progetto principale. – dragostis
La sintassi è corretta e funziona correttamente con un modulo dell'applicazione. Non so come possa funzionare con una biblioteca. Secondo me dovresti spostare l'aroma nel modulo principale (non ho mai visto sapori all'interno di una libreria) –