之前一篇写过有关 ButterKnife 插件的使用,当时只是做了插件查找、安装以及在 Activity 中如何使用。在这里先给各位道个歉,因为我也只是做了以上这些步骤,并没有在 demo 中实际使用。今天正好测试一个功能的可行性,在 demo 中实际操作了 ButterKnife ,但是我发现项目编译没有问题,但是在控件赋值时却报了空指针引用的 bug,顿时有点蒙比被欺骗的感觉,难道 ButterKnife 出问题了?可怜的我竟然还发布了它的使用方法。。。
既然出现了问题,那就只能解决它了,不能辜负了大家的厚爱(请大家原谅我的自恋 o(∩_∩)o 哈哈)。插件的使用方法应该是没有错的,要不然 Studio 编译这一关也不会通过的,看来是另有原因了。
我的 ButterKnife 版本是 8.4.0,根据版本查找的解决方法是需要在 build.gradle 中引入 android-apt 插件。
在项目的 build.gradle 中
在 app 的 build.gradle 中
将 android-apt 配置之后,再次运行就可以了。
下面还是要来看看出现这个问题的原因。原来是 8 之后版本与以前配置不大一样,可以看一下 github 原文:
Configure your project-level build.gradle to include the 'Android-apt' plugin:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
Then, apply the 'android-apt' plugin in your module-level build.gradle
and add the Butter Knife dependencies:
apply plugin: 'android-apt'
android {
...
}
dependencies {
compile 'com.jakewharton:butterknife:8.2.1'
apt 'com.jakewharton:butterknife-compiler:8.2.1'
}
坑已铺平,望大家注意跳过!!!