Ошибка Android Studio 3.0: android-apt несовместим

Я новичок в разработке Android и получил устаревший проект. Поэтому я установил новейшую версию Android Studio и открыл ее.

Когда я пытаюсь построить его, я получаю эту ошибку:

Error:android-apt plugin is incompatible with the Android Gradle plugin.  Please use 'annotationProcessor' configuration instead.

Я пробовал решения, показанные в этих поток, но это не сработало.

У меня нет ссылки на android-apt в моем сценарии сборки grandle.

Многие пакеты компиляции отображаются как устаревшие. Но когда я следую предложению студии Android обновить ссылку, я получаю сообщение об ошибке, говорящее, что пакет не найден.

Как я уже сказал, я новичок в Android Studio World, поэтому я немного запутался во всех этих вещах.

Это мой build.gradle (модуль: приложение):

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'realm-android'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"


    defaultConfig {
        applicationId "xxxxxxxxxxxx"
        minSdkVersion 19
        targetSdkVersion 24
        versionCode 123
        versionName "1.2.3"
        manifestPlaceholders = [HOCKEYAPP_APP_ID: "xxxxxxxxxxxxxxxxxxxxx"]

        //For Test
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile('com.mikepenz:materialdrawer:4.6.4@aar') {
        transitive = true
    }

    //For Test
    androidTestCompile 'com.android.support:support-annotations:24.2.1'
    //noinspection GradleCompatible
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support.test:rules:0.5'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'
    compile 'com.android.support:cardview-v7:24.2.1'
    compile 'com.android.support:recyclerview-v7:24.2.1'
    compile 'com.android.support:support-v4:24.2.1'
    compile 'com.android.support:support-v13:24.2.1'
    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
    compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
    compile 'com.squareup.okhttp3:okhttp:3.1.2'

    compile 'com.jakewharton:butterknife:7.0.1'

    compile 'com.p_v:flexiblecalendar:1.1.4'
    compile 'br.com.zbra:android-linq:1.0.1'

    compile 'com.google.android.gms:play-services-maps:9.4.0'

    compile 'com.github.PhilJay:MPAndroidChart:v2.1.6'
    compile 'com.cardiomood.android:android-widgets:0.1.1'
    compile 'com.github.thorbenprimke:realm-recyclerview:0.9.14'

    compile 'net.hockeyapp.android:HockeySDK:4.0.0'
}

Это мой build.gradle (проект: MyApp):

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'me.tatarka:gradle-retrolambda:3.2.3'
        classpath "io.realm:realm-gradle-plugin:0.88.3"
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

person Renan Vasconcelos    schedule 22.11.2017    source источник
comment
Какую версию Android Studio вы используете?   -  person Valentin Baryshev    schedule 22.11.2017
comment
Как сказано в заголовке: 3.0.1   -  person Renan Vasconcelos    schedule 22.11.2017
comment
Можете ли вы прикрепить проект build.gradle? (в вашем корневом каталоге)   -  person Valentin Baryshev    schedule 22.11.2017
comment
Я отредактировал пост с запрошенной информацией   -  person Renan Vasconcelos    schedule 22.11.2017
comment
Пожалуйста, ознакомьтесь с примечаниями к выпуску для Android Studio 3+, вам следует удалить плагин retrolambda и apt в пользу встроенной поддержки developer.android.com/studio/releases/index.html   -  person Viktor Yakunin    schedule 22.11.2017


Ответы (1)


Сторонний плагин android-apt больше не поддерживается. Вам следует переключиться на встроенную поддержку процессора аннотаций, которая была улучшена для ленивой обработки зависимостей.

При использовании подключаемого модуля Android 3.0.0 необходимо добавить обработчики аннотаций в путь к классам процессора с помощью конфигурации зависимостей annotationProcessor, как показано ниже:

dependencies {
    ...
    annotationProcessor 'com.google.dagger:dagger-compiler:<version-number>'
}

Пожалуйста, прочтите полное руководство по переходу на Android Gradle Plugin 3.0.0 по адресу https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html


Retrolambda больше не нужна. Новый плагин Android Gradle поддерживает функции языка Java 8. Подробнее читайте здесь.


Предполагая, что вы следовали руководству по миграции, ошибка вызвана старым плагином Realm.

Плагин Realm управляет всеми зависимостями Realm за кулисами. Это также означает, что его старая версия не поддерживает новые инструменты.

Конфигурация annotationProcessor впервые поддерживается в Realm 2.2.0, как показано в журнал изменений:

Улучшения

  • Добавлена ​​поддержка конфигурации annotationProcessor, предоставляемой плагином Android Gradle 2.2.0 или более поздней версии. Плагин Realm добавляет свой обработчик аннотаций в конфигурацию annotationProcessor вместо конфигурации apt, если он доступен, а плагин com.neenbedankt.android-apt не используется. В проектах Kotlin используется kapt вместо конфигурации annotationProcessor (#3026).

На самом деле у вас есть два варианта:

  • обновите Realm как минимум до версии 2.2.0 или
  • вернитесь к плагину Android Gradle 2.3.3.
person Eugen Pechanec    schedule 22.11.2017