alwaystest / Blog

24 stars 2 forks source link

Android Library Project和 ButterKnife 8.2.+ #27

Open alwaystest opened 8 years ago

alwaystest commented 8 years ago

Android Library Project和 ButterKnife 8.2.+

标签(空格分隔): Android ButterKnife


幸运,2016.7.10 发布的ButterKnife8.2.0 支持了Library Project(Android Studio 中的Module)中使用ButterKnife。解决了燃眉之急。

使用方法参考:

  1. https://github.com/JakeWharton/butterknife
  2. http://www.cnblogs.com/pedro-neer/p/5689566.html

刚接触的时候有些懵,各种编译错误。

刚开始使用的还是ButterKnife 7.0.1

升级了最新的Android Studio顺便发现ADT 14以上对于Library Project生成的R文件的id不再是final的了(参考)。所以这种工程里面的switch-case不再支持R.id.*。解决了switch-case的错误以后,依然有许多地方报错,@Bind(R.id.***)报错,必须为常量表达式。没见过呀。之前一直都是这么用的。

查了半天资料,发现原来还是由于上面的原因导致报这个错。

搜索到一个ButterKnife的Fork库支持Library Project。然后看到说明,ButterKnife 8.2.0支持这个特性了。马上根据说明修改。

实践之后才弄明白一下几点:

  1. 在Project的build.gradle文件中添加classpath 'com.jakewharton:butterknife-gradle-plugin:8.2.1'并且classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'是要保留下来的。
  2. 在Module的build.gradle文件中添加apply plugin: 'com.jakewharton.butterknife',同时apply plugin: 'com.neenbedankt.android-apt'要保留。
  3. 在Module的dependencies中添加compile 'com.jakewharton:butterknife:8.2.1'apt 'com.jakewharton:butterknife-compiler:8.2.1'
  4. 把Module工程中的ButterKnife的注解部分的R.id.***更换为R2.id.***。同时其他地方的R.id.***是需要保留的。

然后就可以正常编译运行了。

OpenfaceSY commented 7 years ago

Thanks you , very thanks.

wwangaz commented 7 years ago

想要把使用butterknife的project编译为library还是会遇到问题啊

alwaystest commented 7 years ago

比如呢? @wwangaz

cheetah747 commented 7 years ago

怎么找不到unbind方法啊。。。。有bind方法。。。

alwaystest commented 6 years ago

@cheetah747 看下ButterKnife的版本号