Führen Sie die Aufgabe vor dem Kompilieren mit dem Android Gradle-Plugin aus
Habe ich eine sehr einfache build.gradle
- Datei mit dem folgenden Inhalt:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.1'
}
}
apply plugin: 'android'
android {
buildToolsVersion "17.0.0"
compileSdkVersion 17
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
task generateSources {
doFirst {
def script = "python GenerateSources.py".execute()
script.in.eachLine {line -> println line}
script.err.eachLine {line -> println "ERROR: " + line}
script.waitFor()
}
}
Was ich will, ist zu laufen generateSources
Aufgabe, vor der java-Kompilierung gestartet wird. Ich habe mehrere Lösungen, wie das zu tun, wie compileJava.dependsOn("generateSources")
aber leider geben Sie uns einen Fehler:
A problem occurred evaluating root project 'Android'.
> Could not find property 'compileJava' on root project 'Android'.
Ich weiß nicht, Gradle und kann nicht verstehen, was ist falsch an diesem code. Also ich würde gerne wissen, wie ich diese Fehler beheben kann.
InformationsquelleAutor der Frage Michael | 2013-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Offenbar, die
android
plugin nicht hinzufügencompileJava
Aufgabe (wie diejava
plugin wäre). Sie können überprüfen, welche Aufgaben sind mitgradle tasks --all
und wählen Sie die richtige für Ihre (ansonsten korrekten) Abhängigkeit Erklärung.EDIT:
Offenbar, die
android
plugin verzögert Erstellung von Aufgaben in einer Weise, dass Sie können nicht zugegriffen werden eifrig, wie gewohnt. Eine Möglichkeit, dieses problem zu überwinden, ist zu verschieben, bis das Ende der Konfiguration phase:Sind die Chancen, dass es eine idiomatische Lösung für Ihren Anwendungsfall, aber schnell surfen im Android-plugin-docs konnte ich nicht finden.
InformationsquelleAutor der Antwort Peter Niederwieser
Den richtigen Weg, um eine Aufgabe auszuführen, bevor der Java-Kompilierung auf Android zu machen, ist eine Kompilation die Aufgabe, für jede Variante, hängt von Ihrer Aufgabe.
InformationsquelleAutor der Antwort Michael
Sehen Sie die task-Ausführung im terminal ausgeführt Aufgabe zum Beispiel
gradle assemble
. Versuchen Sie, den es begann praktisch vor dem nichts.Bearbeitendies funktioniert möglicherweise nicht in Android Studio, Android-Gradle-DSL nicht über einen
projectsEvaluated
Methode.InformationsquelleAutor der Antwort zest
Versuchen Sie dies:
Die letzten beiden Zeilen sind optional - Sie berufen sich auf die "generateSources" Aufgabe beim ausführen von gradle clean
InformationsquelleAutor der Antwort Phileo99
Für diejenigen, die mit einem multi-Projekt bauen und benötigen, um eine Aufgabe auszuführen, für jedes Projekt, bevor Sie gebaut (es sollte aber auch ok sein wenn nur das app-Projekt), können Sie die Aufgabe in das root-build-Konfiguration-Skript in der
allprojects
Schließung und Ausführung der Aufgabe mit der rechten gibt.Im root-Projekt
build.gradle
:Es wird ausgeführt werden, für jede build-Variante als gut.
Gradle 4.1
InformationsquelleAutor der Antwort devrocca