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-aar
s, jar
s, 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.