当前位置: 首页 > 知识库问答 >
问题:

带有Android库(领域)的注释处理器

裴钧
2023-03-14

我试图创建一个在realm.io之上工作的注释处理器。遗憾的是,要使用realm,你需要一个android项目,而要创建一个注释处理器,你需要一个java项目(以便导入javax.annotation.processing.*)

有人知道如何在android库上导入AbstractProcessor和所有其他需要的东西吗?我找不到这样做的方法(已经将目标兼容性和源兼容性切换到1.7)

共有1个答案

宰父涵忍
2023-03-14

一种在android库上导入AbstractProcessor和所有其他需要的东西的方法

更好的问题是:你为什么想要那样?

如果你觉得你的处理器会依赖于 Realm 类(或任何其他 Android 类),但事实并非如此。编写使用 APT 镜像 API 的代码时,不必直接引用这些类,只需按名称引用即可。生成的代码将如下所示:

DeclaredType theBinder = lookup("android.os.Binder");
DeclaredType theIInterface = lookup("android.os.IInterface");
DeclaredType theCreator = lookup("android.os.Parcelable.Creator");
...
private DeclaredType lookup(CharSequence name) {
    return types.getDeclaredType(elements.getTypeElement(name));
}

然后,您将继续使用类型和元素实用程序类的方法操作创建的TypeMirrors。您也可以将这些镜像转换为其他格式,例如Square的JavaPoet TypeName,但您实际上不必这样做,因为Mirror API提供了您可能需要的大多数功能。

你绝对不想在你的注释处理器中加载 Realm 的类。首先,根本没有必要这样做。但更重要的是,正如您在问题中指出的那样,通常不可能在注释处理器及其运行时设备之间共享相同的设置。这个问题并不是Android独有的,例如,没有人期望设置完整的应用程序服务器来编译使用JAXB感知注释处理器的服务器程序。

如果您真的需要处理器中的领域中的一些代码,并且它不能作为单独的Java库使用,最简单的方法是将代码复制到处理器中。

 类似资料:
  • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?

  • 我已经在现有代码中使用了数据绑定,现在我正在迁移到持久性空间。我已经按照Florina的博客中提到的room的步骤去做了 当我删除房间依赖时,我的代码构建良好,没有java代码错误或BR相关错误 他们俩似乎不在一起工作 迄今采取的步骤: 按此处建议将BaseObservable更改为Observable 将Android Studio更新到3.0.1 尝试使用gradle最新插件canary 6

  • 在多模块Android项目中,注释处理仍然是在任何编译完成之前的第一个任务,然后触发完整的编译。当然,这是在进入< code>app模块之前按模块完成的。 想象一下这样一种情况,一些子模块依赖于其他子模块,编译将会失败,因为依赖者还不能在它所依赖的模块中找到生成类的定义,仅仅因为它们还没有生成。 我想知道是否有一种方法可以使用<code>gradle</code>或任何其他方法强制执行所有子模块注

  • 有人知道如何在Android项目中启用Eclipse中的注释处理吗?我做了以下工作: 使用处理器和META-INF创建Java项目 如果我从文件夹中删除jar文件,Eclipse会报告项目中的错误,因为找不到注释处理器。但是,如果处理器就位并且配置了Eclipse,则不会进行处理 如果我在标准Java项目中使用相同的处理器,它就可以正常工作<有人能帮我吗?谢谢

  • 在我尝试构建我的项目后,我得到以下错误: 我尝试在每个之后添加,但没有成功消除错误。 这是在将Android Studio升级到最新版本 ( 3.0 ) 之后发生的。 编辑: 在中添加 无济于事: 有什么解决方案吗?