ButterKnife没跟杰克合作?

时间:2016-07-13 03:41:51

标签: android android-layout android-studio butterknife jack-compiler

我刚刚开始了一个非常简单的项目,并尝试使用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

我是否遗漏了某些东西,或者只是它们不相容?

4 个答案:

答案 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

希望它会有所帮助