我正在为一个Android项目编写注释处理器,并且遇到了这样的情况。我想从库模块处理带注释的类,即app模块依赖于库模块,并且需要处理库模块中的带注释的类。
但是,注释处理器无法从依赖项“看到”注释,这大概是因为代码已经编译好了。有关另一个库的问题,请参见这里。在分支这里上演示了我的项目的问题。来自sample模块的注释将被处理,而来自lib模块的注释则不会被处理。
这一切都很好,而且我已经接受了没有这个功能的生活,但是Android数据绑定库可以处理来自模块甚至第三方库的注释。例如,这库提供了应用程序处理得很好的@BindingAdapter方法。
在我使用的注解上设置保留类型是没有用的。我能看到的唯一显著区别是,数据绑定处理器以方法为目标,而我的方法则以类(类型)为目标,但我不认为这与处理器有什么不同。所以我想这可能和数据绑定处理器是Android插件的一部分有关,但我不知道这有什么用。
有人知道怎么做到的吗?
发布于 2017-02-14 01:54:02
Android数据绑定也不能处理依赖项上的注释。相反,它在库的编译时处理库,并将信息保存到中间文件作为其存档(例如jar文件)的一部分。然后,它从依赖项加载该中间文件信息,而不是读取注释。
如果将中间信息保存为jar文件依赖项的资源,则可以很容易地从jar文件中提取它。如果我没记错的话,它应该在您的类路径中,您可以使用ClassLoader的getResource()方法。我的内存可能有点陈旧,因为它不再使用jar文件来存储中间文件信息。
https://stackoverflow.com/questions/42210185
复制相似问题