Получение ошибки сборки при обновлении до 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
  }
}

...

Ответ 1

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

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

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

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

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

Так что это тоже можно удалить.

Ответ 2

Хотите подвести итоги для обновления:

  • Обновление до 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 автоматически при обновлении.

  • Удалите 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.

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

    -  buildToolsVersion "23.0.3"
    +  buildToolsVersion '25.0.0'
    
  • Найдите все 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"
    
  • Наконец, это также важно, очистить и перестроить.