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

Azure DevOps CI/CD构建失败:缺失com.kyanogen.signatureview依赖

Android CI/CD依赖解析失败问题排查

问题描述

使用Kotlin开发Android项目,本地通过Android Studio构建可正常生成APK,但Azure DevOps上的CI/CD流水线构建时,无法解析依赖com.kyanogen.signatureview:signature-view:1.2,导致构建失败。

项目结构

根目录build.gradle

buildscript {
    ext.kotlin_version = "1.5.10"
    repositories {
        google()
        gradlePluginPortal()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.2.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.13'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // 警告:此仓库即将关闭
        maven { url 'https://jitpack.io' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
    id 'com.google.gms.google-services'
}

android {
    compileSdkVersion 31
    buildToolsVersion '30.0.3'

    defaultConfig {
        applicationId "com.example.esales"
        minSdkVersion 23
        targetSdkVersion 31
        versionCode 1
        versionName "1.5.1"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            useProguard true
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.5.0'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    implementation 'com.kyanogen.signatureview:signature-view:1.2'
}

已尝试操作

  • 仓库配置:确保jitpack.io仓库同时配置在根目录和模块级build.gradle文件中;
  • 本地模拟构建:执行./gradlew clean build --refresh-dependencies模拟CI/CD环境,本地构建仍可成功。

核心问题

为何CI/CD流水线无法解析com.kyanogen.signatureview:signature-view:1.2依赖?如何修复该问题使流水线构建与本地构建一致?

补充信息

  • CI/CD运行环境:Azure DevOps(Ubuntu);
  • 本地开发环境:macOS + Android Studio。

可能原因及修复方案

1. JitPack仓库网络访问限制

Azure DevOps的Ubuntu代理可能存在网络防火墙或代理配置,导致无法正常访问JitPack仓库。

  • 修复:在流水线的Gradle任务中添加--debug参数执行构建,查看依赖解析阶段的详细日志,确认是否存在网络超时或连接拒绝错误。若为网络问题,可在流水线中配置对应代理,或切换到可访问的镜像源。

2. Gradle缓存差异

本地Gradle缓存已缓存该依赖,但CI/CD环境为全新环境或缓存未同步。

  • 修复:在流水线构建前添加清理缓存步骤,执行rm -rf ~/.gradle/caches,再运行./gradlew clean build --refresh-dependencies。同时检查Azure DevOps的Gradle缓存配置,确保缓存策略正确生效。

3. 仓库配置优先级或生效问题

虽然根目录配置了JitPack,但模块级配置可能被覆盖,或Gradle版本差异导致仓库加载顺序异常。

  • 修复:
    • 确认模块级build.gradle的repositories块中明确包含maven { url 'https://jitpack.io' };
    • 将JitPack仓库移至repositories块的靠前位置,避免被其他仓库优先级覆盖;
    • 确认CI/CD环境使用的Gradle版本与本地一致(通过./gradlew --version查看本地版本,确保流水线使用相同的Gradle wrapper)。

4. JitPack包临时可用性问题

本地可拉取依赖,但CI/CD环境访问JitPack时该版本临时不可用。

  • 修复:手动在CI/CD环境的Ubuntu机器上执行./gradlew dependencies查看依赖树,确认是否能定位到该依赖;同时再次核对依赖坐标com.kyanogen.signatureview:signature-view:1.2的拼写正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:55:55