Gitlab部署maven的方法-适配AGP7.1+
背景是这个博客:https://blog.csdn.net/yeshennet/article/details/125121537
我用那个博客的方法自己生产aar发布到gitlab-maven上。
最近升级了AGP,遇到问题,报错如下:
* What went wrong:
Failed to query the value of property 'buildFlowServiceProperty'.
> Could not isolate value org.jetbrains.kotlin.gradle.plugin.statistics.BuildFlowService$Parameters_Decorated@7f455421 of type BuildFlowService.Parameters
> A problem occurred configuring project ':libyeshen'.
> Could not get unknown property 'release' for SoftwareComponent container of type org.gradle.api.internal.component.DefaultSoftwareComponentContainer.
解决方法
在 libyeshen/build.gradle 的 android 模块中添加 如下 publishing 函数
android {
publishing {
singleVariant("release") {
withSourcesJar()
}
}
}
原因
https://developer.android.com/build/publish-library/configure-pub-variants?hl=zh-cn
Android Gradle 插件 (AGP) 7.1 引入了网域专用语言 (DSL),以控制在发布期间使用哪些 build 变体以及忽略哪些 build 变体。借助 DSL,您可以创建包含以下内容之一的 SoftwareComponent 实例:
- 来自一个 build 变体的一个发布内容变体
- 来自多个 build 变体的多个发布内容变体
创建具有多个发布内容变体的软件组件时,AGP 会为每个变体设置属性,以便使用者能够选择自己需要的适当变体。这些属性直接来自用于创建 build 变体的 build 类型和变种。创建具有单个发布内容变体的组件不需要属性,因为不需要进行任何区分。
创建具有单个发布内容变体的软件组件
以下代码段会使用从 release build 变体创建的单个发布内容变体来配置软件组件,并将源代码 JAR 添加为辅助工件:
android {
publishing {
singleVariant("release") {
withSourcesJar()
}
}
}
您可以创建多个组件,每个组件都包含一个发布内容变体,并在不同 Maven 坐标下分发这些组件。在这种情况下,发布内容变体上不会设置任何属性。您无法通过查看发布内容元数据来判断此发布内容变体是否来自 release build 变体。由于只涉及一个发布内容变体,因此无需消除歧义。