butterknife 7.x和Kotlin M14一起工作吗?

我试图用一些Kotlin代码和Java代码来使用Butterknife。 我知道在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 。 但有没有什么破解得到它的工作?

它可以与当前版本的Kotlin(1.0.0-beta-3595)一起工作,我建议你看一下在JetBrains的kotlin-examples回购中可以找到的android-butterknife项目。 总之你所需要做的是:

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

     kapt { generateStubs = true } 
  2. 把下面一行放在同一个build.gradle文件的dependencies块里面(假设你已经在你的依赖项中添加了compile 'com.jakewharton:butterknife:7.0.1' ):

     kapt 'com.jakewharton:butterknife:7.0.1' 

这应该是。

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

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

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