我有自定义注释处理器生成工厂类和META-INF/services/factory.interface.class
资源.
注释处理器用于库项目,所有生成的文件都正确打包到AAR中.
当我在应用程序项目中使用注释处理器时,库作为依赖项添加,只有库META-INF/services/factory.interface.class
中的类存在APK/META-INF/services/factory.interface.class
经过一番调查,我意识到MergeJavaResourcesTransform
在android-gradle-plugin-1.5.0(和2.0.0-alpha3)中寻找合并所有exploded-aar
s,jar
s和intermediates/sourceFolderJavaResources
有没有办法合并META-INF
从intermediates/classes
(这是从哪里注释处理器资源文件获得创建),或使注释处理器创建的文件sourceFolderJavaResources
?
到目前为止,我发现的唯一解决方法是添加CopyTask
应用程序的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 }
但我不打算强制编译库,用户除了添加依赖项之外还做更多的事情.