ButterKnife和AnnotationProcessor

时间:2017-03-16 04:13:42

标签: android android-gradle butterknife

基于ButterKnife lib,我升级到新版本8.5.1。我用了

compile 'com.jakewharton:butterknife:8.5.1'
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

但它在我的Android Studio 2.3中警告我。并且ButterKnife不起作用(不能绑定视图)。

  

警告:使用不兼容的插件进行注释处理:   Android的贴切。这可能会导致意外行为。

我将 annotationProcessor 更改为 apt (我的gradle中有插件apply plugin: 'com.neenbedankt.android-apt')并且它在没有警告的情况下作为旧版本工作(我使用旧版本的apt 8.4.0)

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

我认为Android Studio 2.3不适用于Annottaion处理。我搜索并发现在Android Studio 2.2中启用注释处理器但在Android Studio 2.3中找不到

  

设置>构建,执行,部署>编译器>注解   处理器

任何人都可以解释这个问题吗?谢谢!

4 个答案:

答案 0 :(得分:6)

麻烦

 {u'audienceAbbreviation': u'',
   u'audienceDescription': u'(hardware, gadgets, accessories, ...) - extend enabled',
   u'audienceId': u'202174',
   u'audienceName': u'XTND_3PD_SGU_ConsumerElectronics',
   u'audienceStats': [{u'availableImpressions': u'0',
     u'clientId': u'7927',
     u'clientName': u'(SGU)',
     u'dataDate': u'20170315',
     u'growth': u'0',
     u'lift30DayUniques': u'0',
     u'linked30DayUniques': u'0',
     u'pageViews': u'13894581',
     u'unified30DayUniques': u'0',
     u'uniques': u'960789352',
     u'universeId': u'1',
     u'universeName': u'All'}],

然后在app依赖

// Butterknife

//apply plugin: 'com.neenbedankt.android-apt'  <--remove this
apply plugin: 'com.jakewharton.butterknife'  <-- add this


dependencies {
    //classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'  <-- remove this
    classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1' <-- add this
}

答案 1 :(得分:3)

简单易行。只需将这些行添加到build.gradle

即可
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

答案 2 :(得分:0)

Gradle 2.2版中包含一个注释处理器,因此没有理由提供额外的处理器。

检查我的更新回答here

答案 3 :(得分:0)

To use Butter Knife in directly project:
dependencies {
  implementation 'com.jakewharton:butterknife:9.0.0-rc2'
  annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc2'
}

To use Butter Knife in a library, add the plugin to your buildscript:

buildscript {
  repositories {
    mavenCentral()
   }
  dependencies {
    classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2'
  }
}

apply it in your module:

apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'