Ich versuche, ein Gradle-Plugin zu erstellen, das Quellcode für bestimmte Varianten generiert. Das Ausgabeverzeichnis dieser Generierungstasks muss der Quellengruppe der entsprechenden Variante hinzugefügt werden.Hinzufügen zu Build-Variante Source-Set innerhalb von AfterEvaluate
Zur Zeit bin ich dies innerhalb eines afterEvaluate
Block tun (in der build.gradle
der Einfachheit App enthalten):
android {
...
productFlavors {
foo {}
bar {}
}
}
afterEvaluate {
android.sourceSets.each { sourceSet ->
sourceSet.java.srcDirs += new File(project.buildDir, "generated/source/mygeneratedsource/${sourceSet.name}")
}
}
Und meine Verzeichnisstruktur endet wie folgt auf (Standard-Paket der Kürze halber verwendet wird):
app
\--build
\--generated
\--source
\--mygeneratedsource
\--foo
\--GeneratedClass.java
\--bar
\--GeneratedClass.java
\--src
\--main
\--java
\--MyApp.java
Es scheint, dass Android Studio die neuen Verzeichnisse als gültige variantenspezifische Quellverzeichnisse übernimmt (ich kann GeneratedClass von innerhalb von MyApp referenzieren), aber wenn ich versuche zu kompilieren, bekomme ich:
error: cannot find symbol GeneratedClass
Weiß jemand, warum AS das Symbol lösen kann, aber während der Kompilierung schlägt es fehl?