我正在为Android项目编写注释处理器并遇到了一种情况。我想从库模块处理带注释的类,即app模块依赖于库模块,需要从库模块处理带注释的类。
然而,注释处理器无法看到""来自依赖的注释,可能是因为代码已经编译。有关其他库的问题,请参阅here。我的项目问题的演示在分支here上。来自sample
模块的注释已处理,但lib
模块中的注释未处理。
这一切都很好,并且我在没有这个功能的情况下辞职,但事实证明Android数据绑定库可以处理来自模块甚至第三方库的注释。例如,This库提供了应用程序正常处理的@BindingAdapter
方法。
我在我使用的注释上设置保留类型无济于事。我能看到的唯一显着差异是数据绑定处理器以我的方法为目标类(类型)为目标方法,但我认为这不应该与处理器产生差异。所以我认为它可能与数据绑定处理器是Android插件的一部分有关,但我不确定这有多大帮助。
任何人都知道如何做到这一点?
答案 0 :(得分:2)
Android数据绑定也不能处理依赖关系的注释。相反,它在库的编译时处理库,并将信息作为其归档的一部分(例如jar文件)保存到中间文件中。然后,它从依赖项加载该中间文件信息,而不是读取注释。
如果将中间信息保存为jar文件依赖项的资源,则可以非常轻松地从jar文件中提取它。如果我没记错的话,它应该在你的类路径中,你可以使用ClassLoader的getResource()方法。我的记忆可能有点陈旧,因为它不再使用jar文件来存储中间文件信息。