butterknife 7.x与Kotlin M14配合使用吗?

时间:2015-10-05 15:16:43

标签: android kotlin butterknife

我试图将Butterknife与一些Kotlin代码和Java代码一起使用。我知道在M12之前,对ButterKnife所需的注释处理有不好或不支持。所以我把我的活动保存在Java中。它至少在Java中使用Butterknife 6.x和preM12 Kotlin。 我现在尝试使用M13和M14的butterknife 7.x.它甚至应该有注释处理支持,但它对我不起作用。 bind()函数不会绑定我的适配器中的任何内容,该适配器是用Java编写的,也不是用Kotlin编写的活动。

我在build.gradle中使用它(在Github上试过最新版本):

apply plugin: 'com.neenbedankt.android-apt'

dependencies {
   provided files('libs/butterknife-annotations.jar')
   kapt files('libs/butterknife-compiler-8.0.0-SNAPSHOT.jar')
   compile 'com.jakewharton:butterknife:8.0.0-SNAPSHOT@aar'
}

这不会编译。我也试过了“com.neenbedankt.android-apt'哪个编译但绑定不起作用。

我知道 butterknife 可能还没有支持。但有没有让它运作的黑客?

2 个答案:

答案 0 :(得分:13)

它适用于当前版本的Kotlin(1.0.0-beta-3595),我建议你看一下可以在JetBrains' {{{{{{{{ 3}}回购。简而言之,您需要做的就是:

  1. 将以下内容添加到app/build.gradle文件中:

    kapt {
        generateStubs = true
    }
    
  2. 将以下行放在同一dependencies文件的build.gradle块中(假设您已将compile 'com.jakewharton:butterknife:7.0.1'添加到依赖项中):

    kapt 'com.jakewharton:butterknife:7.0.1'
    
  3. 那应该是它。

答案 1 :(得分:3)

支持Butterknife。使用kapt:[1][2]

请注意,Butterknife不支持私有Java字段,因此您可以使用lateinit修饰符将其公开。

另外,如果你使用kapt, apply plugin: 'com.neenbedankt.android-apt' 不再需要这条线了。