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

Voj*_*zel 10 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'
}
Run Code Online (Sandbox Code Playgroud)

这不编译.我也尝试了'com.neenbedankt.android-apt',它确实编译但绑定不起作用.

我知道那可能还没有黄油刀的支持.但有没有让它运作的黑客?

aga*_*aga 13

它适用于当前版本的Kotlin(1.0.0-beta-3595),我建议你看一下android-butterknife项目,它可以在JetBrains的kotlin-examples repo中找到.总之,您需要做的就是:

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

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

    kapt 'com.jakewharton:butterknife:7.0.1'
    
    Run Code Online (Sandbox Code Playgroud)

这应该是它.

  • 作为butterknife 8.x的,你现在运行`编译器的lib,而不是第二个参考butterknife本身,即'kapt"com.jakewharton kapt`:butterknife编译:8.0.1'`.JetBrains在上面的答案中链接的示例项目已经更新,以反映这一变化. (2认同)