Android注解库 Butterknife问题合集

本文记录了在Android项目中使用Butterknife遇到的问题,包括在Library中使用时遇到的Attribute value must be constant错误,以及解决方案,如升级Butterknife到8.4.0版本,利用R2类绑定View。同时提到apt插件的使用位置,并分享了一个包含解耦思路的示例工程Git地址。
摘要由CSDN通过智能技术生成

最近搞了一个包含几点解耦思路的Android示例工程 , 使用ButterKnife的时候碰到一些问题 , 在这里记录下来 , 也包括以后会碰到的问题.

1. 问题 : 在Library中使用Butterknife时, bindview注解参数会报Attribute value must be constant. 

----原因是library中的R.id.xx 这个id值不是一个常量(static final 修饰的)

我的解决方案 : 引入8.4.0版本的Butterknife :

在主工程的build.gradle 添加两个classpath

dependencies{
	classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
	classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
}
   在目标library的build.gradle添加两个plugin, 以及对butterknife的依赖

apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'com.neenbedankt.android-apt'


apt 'com.jakewharton:butterknife-compiler:8.4.0'
compile 'com.jakewharton:butterknife:8.4.0'

    最后使用Butterknife gradle插件生成的R2类来绑定View

@BindView(R2.id.id_demoText)
    TextView mTextView;

2.  问题 : 引用 library中的Butterknife 绑定无效

        ----猜测是apt插件必须要在使用butterknife的module中声明 , 被依赖library的module只需要声明compile.

我的解决方案 : 在使用Butterknife的module中引入

apply plugin: 'com.neenbedankt.android-apt'
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    apt 'com.jakewharton:butterknife-compiler:8.4.0'
    compile project(path: ':common')
}
在common模块中只用compile库就OK

dependencies {
    compile 'com.jakewharton:butterknife:8.4.0'
}
原理的话对gradle研究的不多 , 以后再补上.


另外附上示例项目的git地址 https://github.com/baoyin152/by_mvp-bus_app.git




     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值