java - 注解处理第三方库

标签 java android android-databinding annotation-processing android-binding-adapter

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

但是,注释处理器无法“查看”依赖项中的注释,可能是因为代码已编译。请参阅here关于另一个图书馆的问题。我的项目问题的演示位于分支 here 。来自 sample 模块的注释被处理,但来自 lib 模块的注释未被处理。

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

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

有人知道这是怎么做到的吗?

最佳答案

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

如果将中间信息保存为 jar 文件依赖项的资源,则可以非常轻松地从 jar 文件中提取它。如果我没记错的话,它应该在您的类路径中,并且您可以使用 ClassLoader 的 getResource() 方法。我对此的内存可能有点陈旧,因为它不再使用 jar 文件来存储中间文件信息。

关于java - 注解处理第三方库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42210185/

相关文章:

java - JSP 自定义标签 : missing DTD/XML Schema

java - 检测代词及其名词?

java - Servlet中jsp获取session属性值

Java Restful web服务方法消费MultiPart数据抛异常

android - "Visual Studio Android Emulator"为 "Android Studio"

java - 使缓存失效并重新启动并不能修复 BR 导入错误...数据绑定(bind)问题

java - USERAUTH 无法使用 JGit 为 PullCommand() 安全地访问 git 存储库

Java 包约定

android - 使用 Android 数据绑定(bind)创建双向绑定(bind)

android-databinding - 使用 ViewModel 和 DataBinding 更新 UI