TL'DR: 在这个Android Kotlin库中,我从Gradle 5.6.4更新到6.6.1(提交d5d8d2
)。现在我不能再构建依赖于aar的项目。
测试设置
我将aar构建并部署到mavenLocal...
$ ./gradlew clean :roadsigns:assemble
$ ./gradlew publishToMavenLocal
...然后在示例Android app
模块中引用已部署的库文件。首先在根build.gradle文件中添加mavenLocal()
:
allprojects {
repositories {
google()
mavenCentral()
jcenter()
mavenLocal() // <-- Add this
}
}
我直接引用mavenLocal()
依赖:
dependencies {
implementation
// implementation project(":roadsigns")
implementation "info.metadude.kotlin.library.roadsigns:roadsigns:$version"
implementation Libs.kotlinStdlib
// ...
错误
当我构建示例应用程序时,我遇到了以下构建错误:
$ ./gradlew clean assembleDebug
Execution failed for task ':checkDebugAarMetadata'.
> Multiple task action failures occurred:
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> A dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) does
not specify an aarFormatVersion value, which is a required value.
Dependency: info.metadude.kotlin.library.roadsigns:roadsigns:4.0.0.
AAR metadata file: /home/USERNAME/.m2/repository/info/metadude/kotlin/library/roadsigns/roadsigns/4.0.0/roadsigns-4.0.0-javadoc.jar.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> A dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) does
not specify an aarFormatVersion value, which is a required value.
Dependency: info.metadude.kotlin.library.roadsigns:roadsigns:4.0.0.
AAR metadata file: /home/USERNAME/.m2/repository/info/metadude/kotlin/library/roadsigns/roadsigns/4.0.0/roadsigns-4.0.0-sources.jar.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> A dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) does
not specify an aarFormatVersion value, which is a required value.
Dependency: info.metadude.kotlin.library.roadsigns:roadsigns:4.0.0.
AAR metadata file: /home/USERNAME/.m2/repository/info/metadude/kotlin/library/roadsigns/roadsigns/4.0.0/roadsigns-4.0.0.aar.
上下文信息
当我尝试使用Gradle 5.6.4时,没有错误。
在我使用的Android Kotlin库中:
我在我的电脑上使用Java 8 (OpenJDK)并验证了同样的错误发生在另一台计算机上。实验
- 当我使用Gradle 5部署库并使用Gradle 5或Gradle 6构建应用程序时,在这两种情况下都可以工作。
什么导致从Gradle 5到Gradle 6的更改使得aar文件损坏?
结果
我查看了在
mavenLocal()
中部署的文件:~/.m2/repository/info/metadude/kotlin/library/roadsigns
└── roadsigns
├── 4.0.0
│ ├── roadsigns-4.0.0.aar
│ ├── roadsigns-4.0.0-javadoc.jar
│ ├── roadsigns-4.0.0.module
│ ├── roadsigns-4.0.0.pom
│ └── roadsigns-4.0.0-sources.jar
└── maven-metadata-local.xml我比较了使用Gradle 5和Gradle 6部署的文件。有趣的是,
roadsigns-4.0.0.aar
文件是二进制等效的。不过,pom
文件有所不同:此外,只有当我使用Gradle 6部署时才有一个
roadsigns-4.0.0.module
文件。当我手动从使用Gradle 6部署的文件中删除“new”
do_not_remove: published-with-gradle-metadata
部分时,应用程序可以成功构建!问题仍然存在...发生了什么?!