2

我正在为一个 Android 项目编写注释处理器并遇到了一种情况。我想处理来自库模块的注释类,即应用程序模块依赖于库模块并且需要处理来自库模块的注释类。

但是,注释处理器无法“看到”依赖项中的注释,可能是因为代码已经编译。有关另一个库的问题,请参见此处。我的项目问题的演示在这里的分支上。sample处理来自模块的注释,但来自模块的注释lib来自模块的注释不被处理。

这一切都很好,我已经放弃了没有这个功能的生活,但事实证明,Android 数据绑定库可以处理来自模块甚至第三方库的注释。例如,这个@BindingAdapter库提供了应用程序可以很好地处理的方法。

我尝试在我使用的注释上设置保留类型,但无济于事。我能看到的唯一显着区别是数据绑定处理器以方法为目标,而我的方法以类(类型)为目标,但我认为这不会对处理器产生影响。所以我认为这可能与作为 Android 插件一部分的数据绑定处理器有关,但我不确定这对这里有什么帮助。

有谁知道这是怎么做到的?

4

1 回答 1

2

Android 数据绑定也无法处理依赖项上的注释。相反,它在库的编译时处理库,并将信息保存到中间文件作为其存档的一部分(例如 jar 文件)。然后它从依赖项加载中间文件信息,而不是读取注释。

如果将中间信息保存为 jar 文件依赖项的资源,则可以很容易地从 jar 文件中提取它。如果我没记错的话,它应该在你的类路径中,你可以使用 ClassLoader 的 getResource() 方法。我的记忆可能有点陈旧,因为它不再使用 jar 文件来存储中间文件信息。

于 2017-02-14T01:54:02.473 回答