Android gradle build: running assembleDebug позволяет запускать задачи выделения зависимостей проектов

При запуске assembleDebug вызываются задачи, связанные с выпуском проектов, от которых я зависим.

например. У меня есть проект под названием "x", который зависит от "y".

Когда я gradle assembleDebug он вызывает y: mergeReleaseProguardFiles, packageReleaseAidl и т.д. и т.д.

Ответ 1

Изменить: Не вернее, с Android Gradle Плагин 3.x.

В библиотеках также публикуются артефакты debug и release. Если в проекте есть вкусы или пользовательские типы, они также создаются. И через модули он пытается автоматически сопоставить варианты. Если не согласовано, вам необходимо предоставить matchingFallback для соответствия вариантам между модулями. Более подробную информацию можно найти здесь: https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#resolve_matching_errors


Модули библиотеки Android публикуют только тип сборки "release". У них нет типа "отладки". Даже ваш модуль приложения создает отладочную версию, он будет использовать версию релиза библиотеки.

Вы можете включить тип сборки "debug" для зависимости от библиотеки, используя следующее в вашем файле build.gradle:

android {
  publishNonDefault true
  ...
}

Затем, когда вы используете эту зависимость в другом модуле, вы должны использовать следующее:

dependencies {
  releaseCompile project(path: ':moduleY', configuration: 'release')
  debugCompile project(path: ':moduleY', configuration: 'debug')
}

Я использую тот же трюк в своем приложении. У меня есть общий модуль, и я использую отладочную версию модуля. Найти информацию здесь:

https://github.com/pomopomo/WearPomodoro/blob/develop/mobile/build.gradle#L90