2015-11-03 21 views
7

C'è qualche modo o soluzione alternativa o solo suggerimenti per far funzionare insieme plug-in gradle e gradle-experimental?Miscelazione di plug-in android da gradle e gradle-experimental

Ad esempio, per miscelare queste due versioni:

com.android.tools.build:gradle:1.3.1 
com.android.tools.build:gradle-experimental:0.3.0-alpha4 

Ho un progetto esistente che utilizza alcuni plugin esterni (app/build.gradle):

apply plugin: 'com.android.model.application' 
apply plugin: 'com.android.databinding' 
apply plugin: 'com.jakewharton.hugo' 

nella mia radice build.gradle ho:

com.android.tools.build:gradle-experimental:0.3.0-alpha4 

Problemi che ho:

* What went wrong: 
A problem occurred evaluating project ':app'. 
> Failed to apply plugin [id 'com.android.databinding'] 
    > java.lang.NullPointerException (no error message) 

o

* What went wrong: 
A problem occurred evaluating project ':app'. 
> Failed to apply plugin [id 'com.jakewharton.hugo'] 
    > 'android' or 'android-library' plugin required. 

Senza altri plugin mio progetto funziona bene (ho Biblioteca Android con un po 'di codice NDK che viene chiamato da mio progetto principale. Il problema si verifica quando aggiungo plugin citati su qualsiasi altro.

E la domanda è - si tratta di un problema gradle-experimental o problema di ciascun plugin (hugo, databinding, apt, probabilmente molto di più).

O forse hai qualche suggerimento se c'è un altro modo per avere l'app con il plugin gradle stabile corrente e la libreria (con codice NDK) che utilizza gradle-experimental?

Quello che voglio evitare è un trattamento con i file * .mk e (il più completo possibile) supporto per Android Studio. L'immagine più grande è quella di preparare la libreria .aar con codice NDK (solo calcolo semplice) che sarà in grado di collegarsi ai progetti esistenti.

+0

Cordiali saluti, per consentire associazione dati in Gradle è necessario fare questo, invece: 'databinding { abilitato = true} ' –

+0

@froger_mcs So che questa domanda ha una risposta accettata, ma siete riusciti a usare 'Gradle -experimental' plugin (per supporto NDK) e supporto 'databinding' o queste due caratteristiche devono essere nei moduli separati? – pskink

risposta

4

Sono stato in grado di mescolare Gradle stabile e -experimental plugin Android senza problemi utilizzando le versioni più recenti nel mio progetto.

Si dovrebbe essere in grado di definire sia le dipendenze all'interno build.gradle file del progetto:

dependencies { 
    classpath 'com.android.tools.build:gradle-experimental:0.3.0-alpha7' 
    classpath 'com.android.tools.build:gradle:1.4.0-beta6' 
} 

e quindi utilizzare apply com.android.(application|library) o com.android.model.(application|library) da file build.gradle vostro vario del modulo.

+0

Grazie, sembra che la soluzione fosse solo provare ciascuna delle versioni beta finché non ne trovi una funzionante. :) Vale anche la pena ricordare che i plugin possono essere usati solo con com.android. (Application | library). Quindi, alla fine, per mixare plug-in gradle sperimentale e stabile dovremmo avere diversi moduli (cosa che nel mio caso era il punto). –

+0

Sto provando a mixare 0.6.0-alpha3 e 1.5.0 ma AndroidStudio/gradle non sembra gradirlo. Il mio progetto è composto da un modulo nativo (che produce un aar), quindi utilizzato da una libreria Android, entrambi utilizzati da un'app principale. Non genera alcun errore relativo al progetto durante il caricamento, ma Android Studio (1.5.1) sta diventando pazzo (plug-in di disabilitazione automatica, non essendo in grado di salvare file, non caricare il facet Android, ...). Se hai qualche consiglio, sono interessato! – rockeye

+0

Usando l'ultima versione, '0.6.0-alpha5', l'IDE non può risolvere il modulo, anche con' compile project (": jni-project") '. Hai avuto questi problemi con l'ultima versione di gradle? –

0

Non ho ancora utilizzato il plug-in sperimentale, ma credo che sia possibile suddividere il progetto in 2 moduli Gradle e utilizzare il plug-in Android Gradle standard per il modulo dell'applicazione e il nuovo plug-in sperimentale nel modulo NDK.

0

@ ph0b ha ragione, sto solo dando un aggiornamento di quella risposta.

dovrai nei vostri gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

e nella vostra costruzione del progetto.Gradle

dependencies { 
    classpath 'com.android.tools.build:gradle:2.1.3' 
    classpath "com.android.tools.build:gradle-experimental:0.7.3" 
}