13

我刚开始一个非常简单的项目,并尝试使用ButterKnife和Jack编译器,但似乎它们并没有很好地对付。黄油刀不和杰克一起工作?

摇篮插件版本:2.2.0-ALPHA5

我的模块中的build.gradle我说:

compile 'com.jakewharton:butterknife:8.2.1' 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.2.1' 

和错误消息是:

Error:Execution failed for task ':app:transformJackWithJackForDebug'. 
java.lang.AssertionError: java.lang.IllegalArgumentException 

我错过了什么或者只是它们不兼容?

+1

最多投票只是因为问题的标题是伟大的! – JustSomeDude

回答

3

尝试在你的应用程序中删除的gradle apply plugin: 'android-apt'

如自述,它说:

注:如果您使用的是新杰克编译器2.2.0或更新的版本,你不需要“Android的易”插件而是可以替代在声明编译器依赖性时使用annotationProcessor。

+0

不,我从未添加过android-apt插件。 – Marvin

+2

这可以帮助你https://github.com/JakeWharton/butterknife/issues/616 –

3

感谢@isnotmenow的提示,我试着将ButterKnife版本更改为8.1.0,并且效果很好。 但8.2.0和8.2.1都抱怨异常,我在项目页面发布了an issue

+0

对我来说它也能工作是ButterKnife的降级版本'8.1.0' –

3

下面是类似StackOverflow后一个杰克沃顿商学院的回答是:

如果您使用的杰克:

  • 省略了“Android的易”完全插件。
  • 使用annotationProcessor作为依赖关系(而不是apt)。

我相信你必须使用Android Gradle 插件的2.2.0版本,而不是2.1.x(目前最新版本是2.2.0-alpha5)。

黄油刀文档将在下一版本 (8.2.0),包含此信息进行更新。

来源:Butterknife 8.1.0 not working with JDK 1.8 in Android Studio 2.1.2

检查也:http://github.com/JakeWharton/butterknife/issues/616

希望这将有助于

6

8.3.0版最近刚刚发布了对杰克的支持。

compile 'com.jakewharton:butterknife:8.3.0' 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.3.0'