You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI中AAR模块构建失败问题排查

问题:多模块Android项目GitLab CI构建AAR模块依赖失败

我有一个多模块Android项目,为AAR文件创建了单独模块,其Gradle配置如下:

configurations.maybeCreate("default")
artifacts.add("default", file('my-aar-1.0.0.aar'))

另有模块依赖该AAR模块,在Android Studio中执行./gradlew build可正常构建,但在GitLab CI脚本中执行时出现如下错误:

Install Android SDK Platform-Tools (revision: 34.0.5) finished.
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':features:app:buildProdBetaPreBundle'.
> Could not resolve all task dependencies for configuration 
':features:app:prodBetaRuntimeClasspath'.
> Could not resolve project :myaar.
 Required by:
     project :app > project :module:secondmodule
  > No matching configuration of project :myaar was found. The consumer was configured to find a runtime of a component, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'beta', attribute 'com.android.build.api.attributes.ProductFlavor:default' with value 'prod', attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '7.4.2', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm' but:
      - Configuration 'ktlintRuleset':
          - Other compatible attributes:
              - Doesn't say anything about com.android.build.api.attributes.AgpVersionAttr (required '7.4.2')
              - Doesn't say anything about com.android.build.api.attributes.BuildTypeAttr (required 'beta')
              - Doesn't say anything about com.android.build.api.attributes.ProductFlavor:default (required 'prod')
              - Doesn't say anything about its target Java environment (preferred optimized for Android)
              - Doesn't say anything about its usage (required a runtime)
              - Doesn't say anything about org.jetbrains.kotlin.platform.type (required 'androidJvm')

GitLab CI脚本配置如下:

image: public.ecr.aws/openjdk:11jdk-new

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.2"
  ANDROID_SDK_TOOLS:   "4333796"
  ENVIRONMENT: $CI_COMMIT_REF_NAME
  REGION: $AWS_DEFAULT_REGION

stages:
 - build

lintDebug:
 image: public.ecr.aws/android:latest
 stage: build
 artifacts:
 name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
 when: always
 paths:
  - ./builds/poc-pipeline-android/app/build/outputs/*
 before_script:
- |
  yes | sdkmanager --licenses && \
  yes | sdkmanager --update --channel=0 && \
  yes | sdkmanager \
  "platforms;android-30" \
  "platforms;android-29" \
  "platforms;android-28" \
  "platforms;android-27" \
  "platforms;android-26" \
  "platforms;android-25" \
  "platforms;android-24" \
  "platforms;android-23" \
  "platforms;android-22" \
  "build-tools;30.0.3" \
  "build-tools;30.0.2" \
  "build-tools;30.0.0" \
  "build-tools;29.0.3" \
  "build-tools;29.0.2" \
  "build-tools;29.0.1" \
  "build-tools;29.0.0" \
  "build-tools;28.0.3" \
  "build-tools;28.0.2" \
  "build-tools;28.0.1" \
  "build-tools;28.0.0" \
  "build-tools;27.0.3" \
  "build-tools;27.0.2" \
  "build-tools;27.0.1" \
  "build-tools;27.0.0" \
  "build-tools;26.0.2" \
  "build-tools;26.0.1" \
  "build-tools;25.0.3" \
  "build-tools;24.0.3" \
  "build-tools;23.0.3" \
  "build-tools;22.0.1" \
  "build-tools;21.1.2" \
  "build-tools;19.1.0" \
  "build-tools;17.0.0" \
  "system-images;android-30;google_apis;x86" \
  "system-images;android-29;google_apis;x86" \
  "system-images;android-28;google_apis;x86_64" \
  "system-images;android-26;google_apis;x86" \
  "system-images;android-25;google_apis;armeabi-v7a" \
  "system-images;android-24;default;armeabi-v7a" \
  "system-images;android-22;default;armeabi-v7a" \
  "extras;android;m2repository" \
  "extras;google;m2repository" \
  "extras;google;google_play_services" \
  "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" \
  "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1" \
  "add-ons;addon-google_apis-google-23" \
  "add-ons;addon-google_apis-google-22" \
  "add-ons;addon-google_apis-google-21"
 script:
- ./gradlew build

请问该问题是需要修改AAR模块的Gradle配置,还是调整CI脚本?


解决方案

问题出在AAR模块的Gradle配置上,当前的配置只创建了基础的default配置,但未添加Android构建所需的属性,导致CI构建时无法匹配prodBeta变体的属性要求。

方案1:手动为配置添加匹配属性

修改AAR模块的build.gradle,为default配置补充缺失的属性:

configurations {
    create("default") {
        attributes {
            // 标记为Java运行时依赖
            attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME))
            // 标记为Android目标环境
            attribute(TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE, objects.named(TargetJvmEnvironment, TargetJvmEnvironment.ANDROID))
            // 标记为AndroidJVM平台
            attribute(org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.attribute, objects.named(org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType, org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.androidJvm))
            // 匹配主项目的BuildType和ProductFlavor
            attribute(com.android.build.api.attributes.BuildTypeAttr.ATTRIBUTE, objects.named(com.android.build.api.attributes.BuildTypeAttr, "beta"))
            attribute(com.android.build.api.attributes.ProductFlavorAttr.of("default"), objects.named(com.android.build.api.attributes.ProductFlavorAttr, "prod"))
            // 匹配AGP版本
            attribute(com.android.build.api.attributes.AgpVersionAttr.ATTRIBUTE, objects.named(com.android.build.api.attributes.AgpVersionAttr, "7.4.2"))
        }
        outgoing.artifact(file('my-aar-1.0.0.aar'))
    }
}

方案2:应用Android库插件(更推荐)

直接将AAR模块转为标准Android库模块,让插件自动生成适配所有变体的配置:

plugins {
    id 'com.android.library'
}

android {
    compileSdk 28
    buildToolsVersion "28.0.2"

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
    }

    // 复制主项目的buildTypes配置
    buildTypes {
        beta {
            // 保持与主项目一致的配置
        }
    }

    // 复制主项目的productFlavors配置
    productFlavors {
        prod {
            // 保持与主项目一致的配置
        }
    }
}

dependencies {
    // 将本地AAR作为库依赖引入
    implementation files('my-aar-1.0.0.aar')
}

这种方式无需手动维护属性,Android库插件会自动生成对应buildType和productFlavor的配置,完美匹配主项目的属性要求。


内容的提问来源于stack exchange,提问作者Kazunari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:11:08