У меня есть модуль библиотеки Android для Gradle, который зависит от библиотеки Android другого проекта:
androidlib-a depends on androidlib-b
Зависимость androidlib-a
implementation project(path: ':androidlib-b', configuration: "default")
Следующее исключение выдается на этапе конфигурации после обновления доИнструменты сборки Android 3.5.0 из 3.3.0:
Что пошло не так: не удалось определить зависимости задачи ': androidlib-a: lint'. Не удалось разрешить все артефакты для конфигурации ': androidlib-a: releaseCompileClasspath'. Не удалось преобразовать артефакт 'androidlib-b.aar (project: androidlib-b)' для соответствия атрибутам {artifactType = jar}. Не удалось выполнить для IdentityTransform: C: \ LocalData \ projects \ project \ androidlib-b \ build \ output \ aar \ androidlib-b-release.aar. C: \ LocalData \ projects \ project \ androidlib-b \ build \ output \ aar \ androidlib-b-release.aar.
Я изменяю зависимость androidlib-a на:
implementation project(':androidlib-b')
Сборка для androidlib-a из командной строки теперь работает, но у меня возникает следующая проблема при синхронизации студии Android:
ОШИБКА: более одного варианта проекта: androidlib-b соответствуетатрибуты потребителя: - Конфигурация ': androidlib-b: releaseRuntimeElements' вариант android-assets: - Несоответствующие атрибуты: - Найден artifactType 'android-assets', но не требуется. - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется. - Совместимые атрибуты: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'release' и найдено совместимое значение 'release'. - Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'. - Требуется org.gradle.usage java-runtime и найдено совместимое значение java-runtime. - Конфигурация ': androidlib-b: releaseRuntimeElements' вариант android-классы: - Несоответствующие атрибуты: - Найден artifactType 'android-classes', но не требуется. - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется. - Совместимые атрибуты: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'release' и найдено совместимое значение 'release'. - Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'. - Требуется org.gradle.usage java-runtime и найдено совместимое значение java-runtime. - Конфигурация ': androidlib-b: releaseRuntimeElements' вариант android-consumer-proguard-rules: ...
После изменения у меня также возникает проблема в другом модуле, который зависит от androidlib-a, и пытаетсяскопировать зависимости следующим образом:
task copyToLib() {
afterEvaluate {
dependsOn ":androidlib-a:assembleRelease"
}
doLast {
delete libDir
def config = rootProject.project(":project").configurations.releaseRuntimeClasspath
println config.toList()
copy {
into libDir
from config
}
}
}
preBuild.dependsOn "copyToLib"
Не удалось выполнить задачу ': anothermodule: copyToLib'. Не удалось разрешить все файлы для конфигурации ': androidlib-a: releaseRuntimeClasspath'. Более одного варианта проекта: androidlib-b соответствует атрибутам потребителя: - Конфигурация ': androidlib-b: releaseRuntimeElements' вариант android-assets: - Несоответствующие атрибуты: - Найден artifactType 'android-assets', но он не требуется. - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется. - Совместимые атрибуты: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'release' и найдено совместимое значение 'release'. - Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'. - Требуется org.gradle.usage java-runtime и найдено совместимое значение java-runtime. - Конфигурация ': androidlib-b: releaseRuntimeElements' вариант android-классы: - Несоответствующие атрибуты: - Найден artifactType 'android-classes', но не требуется. - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется. - Совместимые атрибуты:- Требуется com.android.build.api.attributes.BuildTypeAttr 'release' и найдено совместимое значение 'release'. - Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'. - Требуется org.gradle.usage 'java-runtime' и найдено совместимое значение 'java-runtime'.
Те же проблемы присутствуют в выпусках инструментов сборки Android 3.5.1.
Полная версия androidlib-a:
apply plugin: 'com.android.library'
version = releaseVersion
android {
compileSdkVersion 27
buildToolsVersion '28.0.3'
defaultConfig {
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName releaseVersion
}
buildTypes {
release {
minifyEnabled false
}
}
}
dependencies {
implementation project(path: ':androidlib-b', configuration: "default")
}
Полная версия androidlib-b:
apply plugin: 'com.android.library'
version = releaseVersion
android {
compileSdkVersion 27
buildToolsVersion '28.0.3'
defaultConfig {
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName releaseVersion
}
buildTypes {
release {
minifyEnabled false
}
}
}