2014-10-21 22 views
5

Ho un sistema di build Android multiprogetto. La struttura del progetto è la seguente:Gradle Android: creazione di più progetti, livello superiore build.gradle

Root Dir 
    | 
    settings.gradle 
    | 
    build.gradle 
    | 
    Apps 
     | 
     app 1 
     | 
     build.gradle 
     | 
     app 2 
     | 
     build.gradle 
    | 
    Libs 
     | 
     lib 1 
     | 
     build.gradle 
     | 
     lib 2 
     | 
     build.gradle 

Tutte le applicazioni e le librerie hanno configration Android comune.

al livello principale build.gradle Ho il seguente:

subprojects { 
    apply plugin: 'android' 
    android { 
     compileSdkVersion "Google Inc.:Google APIs:19" 
     buildToolsVersion "20.0.0" 

     defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 19 
     } 
    } 
} 

Poi ho pensato di aggiungere quanto segue alla build.gradle in App 1

apply plugin: 'com.android.application' 

android { 
    sourceSets { 
     main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src'] 
     res.srcDirs = ['res'] 
     } 
    } 
} 

ottengo il seguente errore :

Cannot add extension with name 'android', as there is an extension already registered with that name. 

nel plugin Gradle per Android, c'è un modo per avere un "configurazi Android maestri su "che può essere esteso da un sottomodulo?

+0

Sei sicuro che il problema non è avere "applicare il plugin" impostato in due posti diversi, con due ID di plugin diversi? –

+0

Potrebbe essere una domanda stupida, si può avere una sezione "android {...}" senza applicare il plugin Android nel file gradle? – pka

+0

No, ma hai già applicato 'android' a tutti i sottoprogetti. –

risposta

2

Ho avuto un problema simile - e ha a che fare con il modo in cui vengono inclusi i plug-in.

Nel vostro "root" costruire file che hai:

apply plugin: 'android' 

nella vostra applicazione è necessario:

apply plugin: 'com.android.application' 

Cambiare la radice per abbinare il plugin app.

Problemi correlati