Получение ошибки сборки при обновлении до Gradle 3.3 и инструментов сборки Android 2.3.0

Я только что обновил мои файлы сборки

Gradle от 2.14.1 до 3.3 Плагин Android от 2.2.3 до 2.3.0

Я получаю следующую ошибку. Похоже, какой-то сторонний плагин проблема. Кто-нибудь может пролить свет на это? Я не могу найти ничего в журналах изменений, связанных с этим изменением.

Возникла проблема при настройке проекта ':apis'.

Не удалось уведомить слушателя об оценке проекта.

Команда "android" больше не включена в SDK. Любые ссылки на него (например, сторонние плагины) должны быть удалены.

Файл сборки, в который выдается ошибка, выглядит примерно так

apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.library'
apply plugin: 'android-apt'

android {
  compileSdkVersion Integer.parseInt(ANDROID_SDK_VERSION)
  buildToolsVersion ANDROID_BUILD_TOOLS_VERSION

  // Legacy apache network stack
  useLibrary 'org.apache.http.legacy'

  defaultConfig {
    minSdkVersion Integer.parseInt(ANDROID_MIN_SDK_VERSION)
    targetSdkVersion Integer.parseInt(ANDROID_SDK_VERSION)
    consumerProguardFiles 'proguard-rules.pro'
  }

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }

  packagingOptions {
    exclude 'LICENSE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE'
  }

  lintOptions {
    abortOnError false
  }
}

...

2 ответа

Решение

android-apt устарела и, согласно руководству по миграции:

Начиная с версии 2.2 плагина Android Gradle, все функции, которые ранее предоставлялись android-apt, теперь доступны в плагине Android.

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

Аналогично, согласно странице плагина sdk-manager-plugin:

Этот плагин устарел и больше не разрабатывается. Инструменты и зависимости автоматически загружаются с использованием версии 2.2.0 плагина Android Gradle или более поздней версии.

Так что это тоже можно убрать.

Хочу обобщить, что нам нужно для обновления:

  1. Обновление до Gradle 3.3 и Android сборки инструментов 2.3.0

    -classpath 'com.android.tools.build:gradle:2.2.3'
    +classpath 'com.android.tools.build:gradle:2.3.0'
    

    а также

    -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
    +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
    

    Это должно быть сделано Android Studio автоматически при обновлении.

  2. Удалить android-apt а также sdk-manager-plugin как предложено @ian

    -classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    

    а также

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

    Эти плагины устарели и больше не нужны в более новой версии Gradle.

  3. Измените номер версии инструмента сборки в файле app / build.gradle:

    -  buildToolsVersion "23.0.3"
    +  buildToolsVersion '25.0.0'
    
  4. Искать всех apt в файле Gradle и заменить на annotationProcessor, В качестве примера, мы используем AutoValue и Parceler, и мы должны сделать это:

    -  apt "com.ryanharter.auto.value:auto-value-gson:$autoValueGsonVersion"
    +  annotationProcessor "com.ryanharter.auto.value:auto-value-gson:$autoValueGsonVersion"
    

    а также

    -  apt "org.parceler:parceler:$parcelerVersion"
    +  annotationProcessor "org.parceler:parceler:$parcelerVersion"
    
  5. Наконец, что также важно, очистите и восстановите.

Другие вопросы по тегам