我有自定义注释处理器生成工厂类和META-INF/services/factory.interface.class
资源。
在库项目中使用注释处理器,所有生成的文件都正确打包到AAR中。
当我在应用程序项目中使用注释处理器并将库添加为依赖项时,META-INF/services/factory.interface.class
APK/META-INF/services/factory.interface.class
中的类
经过一番调查后,我意识到android-gradle-plugin-1.5.0(和2.0.0-alpha3)中的MergeJavaResourcesTransform
在所有exploded-aar
中寻找合并的资源,{{1} } s和jar
有没有办法合并来自intermediates/sourceFolderJavaResources
的{{1}}(这是来自注释处理器的资源文件的创建),还是让注释处理器在META-INF
创建文件?
到目前为止,我找到的唯一解决方法是在应用程序的buildscript中添加intermediates/classes
sourceFolderJavaResources
但我不强迫编译器库用户除了添加依赖项之外还做更多的事情。
答案 0 :(得分:1)
似乎问题与META-INF文件夹有关。以下是针对Service Loader and META-INF
报告的错误顺便说一句,确认solution:
另外,您可能想在SO上查看以下问题:
初步答复:
您可能希望尝试配置library source set resources
属性(包含您的META-INF /服务位置),该属性负责:
要复制到javaResources中的Java资源 输出目录。
以下是一个例子:
android {
...
sourceSets {
main {
resources.srcDirs = ['/src/META_INF_generated']
}
}
...
}