2015-11-03 7 views
7

Gibt es eine Möglichkeit oder Workarounds oder nur Hinweise, um Plugins von Gradle und Gradle-Experimental arbeiten zusammen zu machen?Mischen von android Plugins von Gradle und Gradle-experimental

Zum Beispiel die beiden Versionen zu mischen:

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

ich ein vorhandenes Projekt haben, die einige externe Plugins verwendet (app/build.gradle):

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

in meiner Wurzel build.gradle ich habe:

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

Probleme, die ich habe:

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

oder

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

Ohne anderen Plugins meines Projekt funktioniert gut (ich habe Android-Bibliothek mit einigem NDK-Code, der von meinem Hauptprojekt genannt wird. Problem tritt auf, wenn ich erwähnte Plugins zu anderen hinzufüge.

Und die Frage ist - ist es eine grandle-experimentelle Frage oder Problem jedes Plugins (Hugo, Databinding, Apt, wahrscheinlich viel mehr).

Oder vielleicht haben Sie irgendwelche Hinweise, wenn es andere Möglichkeit gibt, App mit aktuellen stabilen Gradle Plugin und Bibliothek (mit NDK-Code), die grandle-experimental verwendet haben?

Was ich vermeiden möchte, ist ein Umgang mit * .mk-Dateien und (so voll wie möglich) Android Studio-Unterstützung. Größeres Bild ist die Vorbereitung einer .aar-Bibliothek mit NDK-Code (einfach einfache Berechnung), die sich in bestehende Projekte einklinken kann.

+0

FYI, zu ermöglichen, Datenbindung in Gradle Sie tun müssen Sie stattdessen: 'Datenbindung { aktiviert = true }' –

+0

@froger_mcs Ich weiß, diese Frage eine Antwort akzeptiert hat, aber haben Sie es geschafft verwenden 'gradle "experimental" -Plugin (für NDK-Unterstützung) und "Databinding" -Support oder diese beiden Funktionen müssen in den einzelnen Modulen sein? – pskink

Antwort

4

Ich habe in der Lage gewesen, durch die Verwendung der jüngsten Versionen in meinem Projekt ohne Probleme gradle stabil und -Experimentelle android Plugins zu mischen.

sollten Sie in der Lage sein, beide Abhängigkeiten innerhalb Ihres Projekts build.gradle Datei zu definieren:

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

und dann entweder verwenden apply com.android.(application|library) oder com.android.model.(application|library) aus Ihren verschiedenen build.gradle Dateien des Moduls.

+0

Danke, scheint, dass die Lösung war einfach versuchen, jede der Beta-Versionen, bis Sie eine funktionierende finden. :) Es ist auch erwähnenswert, dass Plugins nur mit com.android verwendet werden können (Anwendung | Bibliothek). Also sollten wir am Ende experimentelles und stabiles Gradle-Plugin mischen, sollten wir verschiedene Module haben (was in meinem Fall der Punkt war). –

+0

Ich versuche, 0.6.0-Alpha3 und 1.5.0 zu mischen, aber AndroidStudio/Gradle scheint es nicht zu mögen. Mein Projekt besteht aus einem nativen Modul (produziert eine aar), dann von einer Android-Bibliothek, beide von einer Haupt-App verwendet. Es wirft keinen projektbezogenen Fehler beim Laden auf, aber Android Studio (1.5.1) wird verrückt (automatisches Deaktivieren des Plugins, nicht Speichern von Dateien, Laden der Android-Facette, ...). Wenn Sie einen Rat haben, bin ich interessiert! – rockeye

+0

Mit der neuesten Version '0.6.0-alpha5' kann die IDE das Modul nicht auflösen, auch nicht mit' compile project (": jni-project") '. Hattest du Probleme mit der neuesten Version von Gradle? –

0

Ich habe noch kein experimentelles Plugin verwendet, aber ich denke, Sie können Ihr Projekt in 2 Gradle Module unterteilen und das Standard Android Gradle Plugin für das Anwendungsmodul und das neue experimentelle Plugin im NDK Modul verwenden.

0

@ ph0b ist richtig, ich gebe nur ein Update dieser Antwort.

Sie in Ihrem gradle-wrapper.properties brauchen distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

und in Ihrem Projekt zu bauen.gradle

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