2017-08-15 66 views
0

我想创建一个注释处理器,在realm.io上工作 不幸的是,使用领域需要一个android项目,而创建一个注释处理器,你需要一个java的(为了导入javax.annotation.processing。*)注释处理器与Android库(领域)

任何人都知道一种方式来导入一个android库的AbstractProcessor和所有其他需要的东西?我无法找到我的方式来做到这一点(已打开targetCompatibility和sourceCompatibility至1.7)

回答

0

的方式导入AbstractProcessor和所有其他需要的东西,在Android库

最好的问题:你为什么要那样?

如果你的印象是你的处理器将依赖于Realm类(或任何其他Android类), - 情况并非如此。当您编写使用APT镜像API的代码时,您不必直接引用这些类,而只需使用名称。生成的代码看起来like this

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)); 
} 

你会再继续使用TypesElements工具类的方法来操作创建TypeMirrors。您还可以将这些镜像转换为其他格式,例如Square的JavaPoet TypeName,但实际上并不需要,因为Mirror API提供了您可能需要的大多数功能。

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

如果你确实想要在你的处理器中使用Realm的一段代码,并且它不能作为独立的Java库提供,最简单的方法就是将该代码复制到你的处理器。

+0

终于我做到了,非常感谢!完美的解释! –