1. 程式人生 > >butterknife的使用(包含在各個功能模組module中引用)

butterknife的使用(包含在各個功能模組module中引用)

一、具體使用步驟:1. 在moudle的build.gradle中進行相應jar包的下載,
dependencies {
  compile 'com.jakewharton:butterknife:8.8.1'
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}

2.如果想在library中引用(即除了app moudle外,其它的moudle),需要做如下操作1)在專案的build.gradle中加如下程式碼    
buildscript {
  repositories {
    mavenCentral()
   }
  dependencies {
    classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
} }

2)在每個想使用butterknife的library的build.gradle頭部加入apply
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'

二、使用注意1)之前的butterknife註解是不支援在library中使用的,library中定義的R檔案中id都不是final的,8.4.0之後的butterknife版本加入了對library project支援,所以在library中使用時,和之前有所差異,自動生成的 
@BindView(R.id.user) EditText
username;
需要替換成
@BindView(R2.id.user) EditText username;
按照官方文件來做是有問題的,注入不起作用,會報空指標,並且onclick事件也不起作用正確的使用步驟:1)專案build.gradle中
buildscript {
  repositories {
    mavenCentral()
   }
  dependencies {
    classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
// 新增的部分
  }
}

2)moudle的build.gradle中
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'android-apt' //新新增

dependencies {
  compile 'com.jakewharton:butterknife:8.8.1'
  apt 'com.jakewharton:butterknife-compiler:8.8.1'
}

要注意的一點,專案中如果存在一個baseMoudle和幾個依賴於baseMoudle的moudle話,頭部apply必須是加在每個moudle中,而不是base中,以及dependencies中的
apt 'com.jakewharton:butterknife-compiler:8.8.1'

也必須加在每個moudle中,只有
compile 'com.jakewharton:butterknife:8.8.1'
可以放在baseMoudle中作為公用部分