Moin zusammen,
in meinem aktuellen Projekt geht es darum eine Library für Androidentwickler bereitzustellen, die mittels Annotation Processing Sourcecode generieren soll.
Die Library soll über Gradle/Maven/per Hand in ein Androidprojekt als Dependency eingebunden werden. Wenn die App nun über die IDE gestartet bzw. die eine APK erzeugt wird, soll meine Lib alle annotierten Klassen untersuchen, die entsprechenden Elemente rausfiltern und daraus Sourcecode generieren. Der generierte Sourcecode soll wiederrum compiliert werden und anschließend in der APK landen.
Das Erstellen des Sourcecodes wollte ich mittels Freemarker bewerstelligen. Das klappt auch alles soweit.
Mein Frage ist nun, wie bzw. wo lege ich fest, dass der erzeugte Code an einer bestimmten Stelle liegen soll/kompiliert wird/in der APK landet? Ich möchte ungern das die Anwender eine manuelle Konfiguration vornehmen müssen, sprich das einbinden der .jar-Datei muss reichen.
Der folgende Code wird beim build ausgeführt und erfolgreich eine Datei im Dateisystem erzeugt. Wie bekomme ich es nun hin, das diese Datei kompiliert in der APK landet?
in meinem aktuellen Projekt geht es darum eine Library für Androidentwickler bereitzustellen, die mittels Annotation Processing Sourcecode generieren soll.
Die Library soll über Gradle/Maven/per Hand in ein Androidprojekt als Dependency eingebunden werden. Wenn die App nun über die IDE gestartet bzw. die eine APK erzeugt wird, soll meine Lib alle annotierten Klassen untersuchen, die entsprechenden Elemente rausfiltern und daraus Sourcecode generieren. Der generierte Sourcecode soll wiederrum compiliert werden und anschließend in der APK landen.
Das Erstellen des Sourcecodes wollte ich mittels Freemarker bewerstelligen. Das klappt auch alles soweit.
Mein Frage ist nun, wie bzw. wo lege ich fest, dass der erzeugte Code an einer bestimmten Stelle liegen soll/kompiliert wird/in der APK landet? Ich möchte ungern das die Anwender eine manuelle Konfiguration vornehmen müssen, sprich das einbinden der .jar-Datei muss reichen.
Der folgende Code wird beim build ausgeführt und erfolgreich eine Datei im Dateisystem erzeugt. Wie bekomme ich es nun hin, das diese Datei kompiliert in der APK landet?
Java:
@SupportedAnnotationTypes({ "SomeAnnotation" })
@SupportedSourceVersion(SourceVersion.RELEASE_7)
public class SomeAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for (Element element : roundEnv.getElementsAnnotatedWith(SomeAnnotation.class)) {
SomeAnnotation someAnnotation = element.getAnnotation(SomeAnnotation.class);
try {
FileWriter writer = new FileWriter("E:/" + element.getSimpleName().toString() + ".java");
writer.write("public class " + element.getSimpleName().toString() + " { }");
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
}