Метод Gradle DSL не найден: 'apt()'

Я пытаюсь добавить последнюю версию Butterknife, и я получаю эту ошибку от Gradle:

Ошибка:(31, 0) Метод Gradle DSL не найден: 'apt()' Возможные причины:

  • Проект "MyProject" может использовать версию Gradle, которая не содержит метод. Настройки Gradle
  • В файле сборки может отсутствовать плагин Gradle. Применить плагин Gradle
  • Где мой gradle mobilebuild.gradle является:

    plugins {
        id "net.ltgt.apt" version "0.6"
    }
    
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
    
        defaultConfig {
            applicationId "com.mynamspace.myproject"
            minSdkVersion 19
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        wearApp project(':wear')
        testCompile 'junit:junit:4.12'
        compile 'com.jakewharton:butterknife:8.0.0'
        apt 'com.jakewharton:butterknife-compiler:8.0.0'
        compile 'com.android.support:appcompat-v7:23.3.0'
        compile 'com.google.android.gms:play-services:8.4.0'
        compile 'com.android.support:design:23.3.0'
        compile 'com.android.support:support-v4:23.3.0'
        compile 'com.android.support:recyclerview-v7:23.3.0'
    }
    

    Что не так с плагином gradle-apt?

    5 ответов

    Решение

    Вполне возможно, что есть способ получить ваш plugins работать. Учитывая вашу ошибку, я начну с того, что следую тому, что использует проект ButterKnife, получу эту работу, а затем посмотрю, есть ли рецепт того, что вы пытаетесь.

    Во-первых, на вашем высшем уровне build.gradle файл, включить classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' в buildscriptdependencies, такие как:

      buildscript {
        repositories {
          mavenCentral()
        }
        dependencies {
          classpath 'com.android.tools.build:gradle:2.0.0'
          classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        }
      }
    

    Затем в вашем модуле build.gradle файл, включить apply plugin: 'com.neenbedankt.android-apt' к вершине.

    Ссылки на соответствующие файлы из репозитория ButterKnife GitHub, из проекта и отдельного примера приложения.

    apt устарел, измените apt на новый формат:

    менять

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

    в

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

    https://bitbucket.org/hvisser/android-apt/wiki/Migration

    http://jakewharton.github.io/butterknife/

    Вместо:

        plugins {id "net.ltgt.apt" version "0.6"}
    

    пытаться:

        apply plugin: 'android-apt'
    

    В моем случае помогло: добавление в ваш build.gradle (не основной, а проектный):

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

    а также

    buildscript {
        repositories {
            jcenter()
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:2.1.0'
            classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7'
        }
    }
    

    Добавьте свой apt-код в приложения build.gradle, а НЕ в основной build.gradle.

    dependencies {
        apt group: 'group name here', name: 'artifact name here', version:'version here'
    }
    

    Конечно, вам придется добавить следующий код в ваш основной build.gradle

    buildscript {
        repositories {
            jcenter()
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.2'
            classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        }
    }
    
    Другие вопросы по тегам