繁体   English   中英

注释处理第三方库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM