我刚刚开始了一个非常简单的项目,并尝试使用ButterKnife和Jack编译器,但似乎它们并没有很好地相互应对。
Gradle插件版本: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
我是否遗漏了某些东西,或者只是它们不相容?
答案 0 :(得分:6)
最近发布了8.3.0版,支持Jack。
compile 'com.jakewharton:butterknife:8.3.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.3.0'
答案 1 :(得分:3)
尝试删除应用程序gradle中的apply plugin: 'android-apt'
。
与自述文件一样,它说:
注意:如果您使用版本为2.2.0或更高版本的新Jack编译器,则不需要'android-apt'插件,而是在声明编译器依赖时替换apt和annotationProcessor。
答案 2 :(得分:3)
感谢@isnotmenow的提示,我尝试将ButterKnife版本更改为8.1.0并且效果很好。 但8.2.0和8.2.1都抱怨异常,我在项目页面上发布了an issue。
答案 3 :(得分:3)
以下是Jake Wharton在类似StackOverflow
帖子中的回答:
如果你使用杰克:
- 完全省略'android-apt'插件。
- 使用
annotationProcessor
作为依赖项(而不是apt
)。我相信您必须使用Android Gradle 2.2.0版 插件虽然代替2.1.x(目前最新的是2.2.0-alpha5)。
Butter Knife文档将在下一个版本中更新 (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
希望它会有所帮助