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项目。 总之你所需要做的是:
-
将以下内容添加到您的
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'
行不再需要了。
- 在Android的Fragment.newInstance()模式中使用Kotlin的@JvmOverloads
- 领域,初始化一个空的字符串数组返回“不支持的类型java.lang.String ”上生成
- Observable.combine在kotlin中的最新类型推断
- Kotlin:如何在类中使用多个Generic?
- Kotlin:Dagger2 @Inject context var始终为空
- 用Android Studio 3.0 Canary 4构建错误
- AndroidStudio ExternalSystemException与kotlin 0.12.213
- 私有属性名称不匹配正则表达式
- 如何写while循环与在kotlin中的responseInputStream.read – (while((i = responseInputStream.read(byteContainer))