Android 建议将 AGP 更新到 7.1.1/Gradle 7.2 后库发布失败
Android Library publishing fails after recommended AGP update to 7.1.1/Gradle 7.2
在执行升级到 AGP 7.1.1 并在库项目中从 Android Studio 执行自动升级步骤后,我的构建失败。
我遵循以下指南:https://developer.android.com/studio/build/maven-publish-plugin
我们已经使用它很长时间了,没有任何问题。
执行 IDE 中的自动化步骤后,我现在收到以下错误:
A problem occurred configuring project ':some-lib'.
> Could not find method publications() for arguments [build_546b384slk3v64hu8jsdnbywh$_run_closure1$_closure5$_closure9$_closure10@333a4a39] on object of type com.android.build.gradle.internal.dsl.LibraryPublishingImpl$AgpDecorated.
我的 build.gradle 文件如下所示:
android {
...
afterEvaluate {
publishing {
publications {
mavenAar(MavenPublication) {
from components.release
}
}
repositories {
maven {
url artifact_repo_url
credentials {
...
}
}
}
}
}
}
我的 gradle-wrapper.properties 看起来是这样的:
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
关于如何解决这个问题有什么建议吗?
我的问题的答案如下所示:
https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/LibraryPublishing
afterEvaluate{ publishing {} }
部分应该在 android {} 块之外并且在它自己的 afterEvaluate {}
中
我们还需要在 android 块中添加一个 publishing {}
部分,指定要发布的 variant/s。
对我来说,结果是这样的:
android {
publishing {
singleVariant("release")
}
}
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
// ......
}
}
}
}
在执行升级到 AGP 7.1.1 并在库项目中从 Android Studio 执行自动升级步骤后,我的构建失败。
我遵循以下指南:https://developer.android.com/studio/build/maven-publish-plugin
我们已经使用它很长时间了,没有任何问题。
执行 IDE 中的自动化步骤后,我现在收到以下错误:
A problem occurred configuring project ':some-lib'.
> Could not find method publications() for arguments [build_546b384slk3v64hu8jsdnbywh$_run_closure1$_closure5$_closure9$_closure10@333a4a39] on object of type com.android.build.gradle.internal.dsl.LibraryPublishingImpl$AgpDecorated.
我的 build.gradle 文件如下所示:
android {
...
afterEvaluate {
publishing {
publications {
mavenAar(MavenPublication) {
from components.release
}
}
repositories {
maven {
url artifact_repo_url
credentials {
...
}
}
}
}
}
}
我的 gradle-wrapper.properties 看起来是这样的:
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
关于如何解决这个问题有什么建议吗?
我的问题的答案如下所示: https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/LibraryPublishing
afterEvaluate{ publishing {} }
部分应该在 android {} 块之外并且在它自己的 afterEvaluate {}
我们还需要在 android 块中添加一个 publishing {}
部分,指定要发布的 variant/s。
对我来说,结果是这样的:
android {
publishing {
singleVariant("release")
}
}
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
// ......
}
}
}
}