Почему плагин Android Gradle не переопределяет или игнорирует устаревший SDK? - PullRequest
0 голосов
/ 02 февраля 2019

Допустим, у вас есть проект A28, в котором используется Android SDK 28 и инструменты сборки 28.

compileSdkVersion 28
buildToolsVersion '28.0.2'

Этот проект зависит от проекта B23, в котором используется Android SDK 23 и инструменты 23.0.0 * 1004.*

При сборке A28 сборка не удалась.Вместо того, чтобы получить полезную ошибку, я получаю, что группа файлов (все в B23) отсутствует и не может быть связана (потому что она не была скомпилирована gradle, но нет никаких признаков этого).

Единственное, что может намекнуть на проблему:

ПРЕДУПРЕЖДЕНИЕ. Указанная версия Android SDK Build Tools (23.0.0) игнорируется, так как она ниже минимально поддерживаемой версии (28.0.3) для Android Gradle Plugin 3.2.1.Будут использоваться инструменты сборки Android SDK 28.0.3.Чтобы подавить это предупреждение, удалите «buildToolsVersion '23 .0.0» из своего файла build.gradle, поскольку каждая версия подключаемого модуля Android Gradle теперь имеет версию инструментов сборки по умолчанию.

Но этопрямо говорит, что Gradle скомпилирует этот проект (B23) с версией инструмента 28.0.3, а не 23.0.0.

Если я добавлю

subprojects {
  afterEvaluate { project ->
    if (project.hasProperty("android")) {
      android {
        compileSdkVersion 28
        buildToolsVersion '28.0.2'
      }
    }
  }
}

к моему build.gradle, чтобыявное переопределение всего с помощью buildTools 28 и sdk 28, сборка завершается успешно.

Почему это происходит?Я что-то пропустил?Разве нижние инструменты SDK и сборки уже не должны быть переопределены / проигнорированы?

1 Ответ

0 голосов
/ 02 февраля 2019

вы можете удалить buildToolsVersion в целом из обоих проектов.это потому, что будет использоваться последняя версия в соответствии с targetSdkVersion.даже 28.0.2 ниже минимального требования 28.0.3 для плагина Gradle 3.2.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...