I've custom annotation processor generating factory classes and META-INF/services/factory.interface.class resource.
Annotation processor is used in library project and all generated files are packaged correctly into AAR.
When I use annotation processor in application project with library added as a dependency only classes from libraries META-INF/services/factory.interface.class exist in APK/META-INF/services/factory.interface.class
After some investigation I realized that MergeJavaResourcesTransform in android-gradle-plugin-1.5.0 (and 2.0.0-alpha3) looks for resources for merging in all exploded-aars, jars, and intermediates/sourceFolderJavaResources
Is there any way to merge META-INF from intermediates/classes (it's where resource files from annotation processor get created) or make annotation processor create file in sourceFolderJavaResources?
Only workaround I've found so far is to add CopyTask in application's buildscript
android.applicationVariants.all { variant ->
def variantName = variant.name
def variantNameCapitalized = variantName.capitalize()
def copyMetaInf = tasks.create "copyMetaInf$variantNameCapitalized", Copy
copyMetaInf.from project.fileTree(javaCompile.destinationDir)
copyMetaInf.include "META-INF/**"
copyMetaInf.into "build/intermediates/sourceFolderJavaResources/$variantName"
tasks.findByName("transformResourcesWithMergeJavaResFor$variantNameCapitalized").dependsOn copyMetaInf
}
But I do not wat to force compiler an library users do do anything more than adding dependencies.