MonkeyTalk和Butterknife ViewInjector生成 - (Android + Annotations + AspectJ + Eclipse)

时间:2014-10-13 16:42:45

标签: android aspectj monkeytalk butterknife

我一直在使用ButterKnife成功地在我的应用程序中注入视图,如下所示:

@InjectView(android.R.id.text1)
TextView mMessageText;
@InjectView(android.R.id.button1)
ImageView mButton;
... then later...
View.inflate(ctx, R.layout.layout_message_with_button, this);
ButterKnife.inject(this);
mMessageText.setText("Some Text");

今天早上我整合了MonkeyTalk进行一些测试,现在我的注射似乎被破坏了。我已经删除/读取了ButterKnife的注释处理,但这似乎并没有解决问题。使用findViewById修复了问题(找到了视图),但是直接更改项目以使用findViewById并不是一个真正的选项。

我无法找到有关库之间冲突的任何信息(或者一般使用AspectJ和ButterKnife),所以希望这里有人可以帮助我提供一些有关我可能做错的信息(或者如果它们是错误的)通常不兼容)。

我正在使用ButterKnife 4.0.1和MonkeyTalk Agent 2.0.9

更新 我也尝试在Eclipse项目属性中更改库的构建顺序,但这似乎也没有帮助。

更新 我把它缩小到没有在ButterKnife中创建的生成文件。它似乎与org.eclipse.ajdt.core.ajbuilder中未发生的Annotation处理有关。当我按照这里建议的那样将org.eclipse.jdt.core.javabuilder添加到.project:https://bugs.eclipse.org/bugs/show_bug.cgi?id=169857时,会生成类,但是我在运行时会在.ajc文件上获得NoClassDefFoundError。知道如何让注释处理器在ajbuilder中运行吗?这似乎是我问题的正确解决方案。

更新 从这篇文章(http://andrewclement.blogspot.ca/2014/08/annotation-processing-in-ajdt.html)可以看出,使用Eclipse 4.4可以在同一个项目中处理Aspects和Annotations。但是,似乎ADT 23 + Eclipse 4.4 + AspectJ的组合非常不稳定(并且似乎无法生成ButterKnife的Annotations代码)。有人知道Android Studio会不会有任何帮助?

更新 我将我的项目转换为Android Studio,看起来Aspects和Annotations都在工作。我知道我仍然没有用Aspects做正确的事,因为他们没有处理,直到我将Jake Wharton的Hugo库添加到Android项目中。

0 个答案:

没有答案