我有一个gradle android库模块,它依赖于另一个项目android库:
androidlib-a depends on androidlib-bandroidlib-依赖性
implementation project(path: ':androidlib-b', configuration: "default")在从3.3.0升级到android 3.5.0之后,在配置阶段引发以下异常:
出了什么问题:无法确定任务的依赖性':androidlib-a:lint‘。无法解析配置的所有工件':androidlib-a:releaseCompileClasspath‘。未能将工件'androidlib-b.aar (项目:androidlib-b)‘转换为匹配属性{artifactType=jar}。执行失败的C:\LocalData\projects\project\androidlib-b\build\outputs\aar\androidlib-b-release.aar.:IdentityTransform:C:\LocalData\projects\project\androidlib-b\build\outputs\aar\androidlib-b-release.aar.
我将androidlib-一个依赖项更改为:
implementation project(':androidlib-b')androidlib-a from命令行的构建现在可以工作了,但是我在上遇到了以下问题:
错误:项目的多个变体:androidlib-b与使用者属性- Configuration‘:androidlib-b:releaseRuntimeElements的变体android-assets:--不匹配的属性:--找到了artifactType 'android-assets’,但不是必需的。-找到了com.android.build.api.attributes.VariantAttr‘释放’,但不是必需的。-兼容属性:-必需的com.android.build.api.attributes.BuildTypeAttr 'release‘和找到兼容值'release’。-必需的com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar‘和找到兼容的值'Aar’。-必需的org.gradle.usage‘java-运行时’并找到兼容的值‘java-运行时’。-配置:androidlib-b:releaseRuntimeElements的变体android-classes:-无与伦比的属性:-找到了artifactType 'android-classes‘,但不是必需的。-找到了com.android.build.api.attributes.VariantAttr‘释放’,但不是必需的。-兼容属性:-必需的com.android.build.api.attributes.BuildTypeAttr 'release‘和找到兼容值'release’。-必需的com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar‘和找到兼容的值'Aar’。-必需的org.gradle.usage‘java-运行时’并找到兼容的值‘java-运行时’。-配置:androidlib-b:releaseRuntimeElements的变体android-消费者保护-规则:.
更改之后,我在另一个依赖于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"任务执行失败“:另一个模块:copyToLib‘。无法解析配置的所有文件“:androidlib-a:releaseRuntimeClasspath”。项目的多个变体:androidlib-b匹配使用者属性:- Configuration ':androidlib-b:releaseRuntimeElements‘variant’variant:- Unmatched属性:- artifactType 'android-assets‘,但不是必需的。-找到了com.android.build.api.attributes.VariantAttr‘释放’,但不是必需的。-兼容属性:-必需的com.android.build.api.attributes.BuildTypeAttr 'release‘和找到兼容值'release’。-必需的com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar‘和找到兼容的值'Aar’。-必需的org.gradle.usage‘java-运行时’并找到兼容的值‘java-运行时’。-配置:androidlib-b:releaseRuntimeElements的变体android-classes:-无与伦比的属性:-找到了artifactType 'android-classes‘,但不是必需的。-找到了com.android.build.api.attributes.VariantAttr‘释放’,但不是必需的。-兼容属性:-必需的com.android.build.api.attributes.BuildTypeAttr 'release‘和找到兼容值'release’。-必需的com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar‘和找到兼容的值'Aar’。-必需的org.gradle.usage‘java-运行时’并找到兼容的值‘java-运行时’。
在3.5.1版本中也存在同样的问题。
完整的androidlib-一个构建conifg:
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构建conifg:
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
}
}
}发布于 2019-10-24 07:34:15
我不能说这是否是您的问题,但是AndroidStudio3.5默认允许R8收缩和缩小,取而代之的是-and,即使在调试构建类型上也是如此,至少在某些部分是这样的。
在这个版本中有一个与AAR相关的问题。Android无法找到包含在AAR中的JAR依赖项。这个问题被认为是固定在Android 3.6.0-alpha 05或更高的金丝雀频道,可以在Android的网站上下载。
另外,如果AAR不包含任何JAR依赖项,那么当您的JAR库尝试使用一些第三方库时,在执行过程中仍然可以使用NoClassDefFoundException或NoSuchMethodError。此问题尚未修复,但您可以应用以下解决方法:
只需将下一行添加到根目录下的gradle.properties中,同步项目并重新运行:
android.enableD8.desugaring=false您还可以通过将AAR上传到任何存储库(如本地存储库或云存储库,如JFrog或Nexus私有服务器(如果您的库是私有的),甚至上传到Maven或类似的公共存储库(如果您的库是公共的)来解决这两个问题,因为这些错误只是影响手动包含的AAR,而不是从存储库下载的。
https://stackoverflow.com/questions/58392303
复制相似问题