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回购中可以find的android-butterknife项目。 总之你所需要做的是:
-
将以下内容添加到您的
app/build.gradle
文件中:kapt { generateStubs = true }
-
把下面一行放在同一个
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'
行不再需要了。
- 用Kotlin在Android中线程安全的全局资源
- 从Fragment调用Anko toast()方法会导致java.lang.NoSuchMethodError
- 如何防止对话(警报)在您使用Anko触摸外部或后退时关闭
- Kotlin类NoClassDefFoundError崩溃
- 与Kotlin事件总线不工作
- 如何获取Android Studio中的用户输入数值并将其转换为kotlin中的variablesint?
- 使用Realm + PowerMockito无法在Android Studio中运行Robolectric测试
- 以编程方式在Kotlin中定制TypeFace
- 当使用kotlin找不到文件时,如何从URL.readText()中获取错误