[英]Annotation processing third party libraries
我正在为Android项目编写注释处理器,但遇到了这种情况。 我想从库模块处理带注释的类,即app模块取决于库模块,需要从库模块处理带注释的类。
但是,注释处理器无法从依赖项中“查看”注释,大概是因为代码已经编译。 有关另一个库的问题,请参见此处 。 我的项目存在问题的演示在这里 。 来自sample
模块的注释将被处理,但来自lib
模块的注释将不被处理。
一切都很好,我本来就不想使用此功能,但事实证明,Android数据绑定库可以处理来自模块甚至第三方库的注释。 例如, 该库提供了@BindingAdapter
方法,这些方法可以由应用程序正常处理。
我试着在我无法使用的注释上设置保留类型。 我可以看到的唯一显着区别是,数据绑定处理器以方法为目标,而我的方法以类(类型)为目标,但是我认为这与处理器没有什么区别。 因此,我认为这可能与Android插件中包含的数据绑定处理器有关,但我不确定这对您有什么帮助。
有人知道这是怎么做的吗?
Android数据绑定也无法处理依赖项上的注释。 相反,它在库的编译时处理库,并将信息保存到中间文件作为其存档的一部分(例如jar文件)。 然后,它从依赖项中加载该中间文件信息,而不是读取批注。
如果将中间信息另存为jar文件依赖项的资源,则可以很容易地将其从jar文件中拉出。 如果我没记错的话,它应该在您的类路径中,您可以使用ClassLoader的getResource()方法。 我的记忆可能有点过时了,因为它不再使用jar文件来存储中间文件信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.