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

Travis CI中PR构建失败但推送成功,依赖包解析失败求助

解决Travis构建时找不到LeakCanary 1.5.4的问题

嘿,看起来你遇到了典型的依赖解析环境不一致问题——本地推送没问题,但Travis的PR构建失败,核心报错是找不到com.squareup.leakcanary:leakcanary-android:1.5.4。结合你描述的分支合并、回滚背景,我给你梳理几个排查和修复方向:

1. 确认项目Gradle的仓库配置是否完整

LeakCanary 1.5.4是早期版本,最初托管在JCenter仓库(目前JCenter处于只读状态,但仍可访问旧版本)。你需要检查项目的root build.gradle或app模块的build.gradle,确保仓库配置包含对应源:

// 确保repositories块包含以下仓库
repositories {
    google()
    jcenter() // 关键:1.5.4版本仅在JCenter上存在,mavenCentral无此旧版本
    mavenCentral()
}

如果之前合并代码时不小心删掉了jcenter(),Travis的全新构建环境就会找不到依赖——而本地因为已有缓存,所以不受影响。

2. 适配Travis容器化环境的配置

你用了sudo: false,说明Travis使用轻量容器环境,默认Gradle配置可能和本地有差异。可以在travis.yml里添加前置命令,强制指定仓库配置:

sudo: false
before_install:
  # 确保Gradle使用指定仓库,避免环境默认配置缺失
  - echo "repositories { google(); jcenter(); mavenCentral() }" >> rootProject/build.gradle
  # 禁用Gradle守护,减少容器环境的异常
  - echo "org.gradle.jvmargs=-Dorg.gradle.daemon=false" >> gradle.properties

另外,还可以查看Travis构建日志里的Gradle仓库列表,确认是否包含能找到1.5.4的仓库源。

3. 验证依赖可访问性与本地缓存差异

本地推送成功是因为Gradle已缓存leakcanary-android:1.5.4,但Travis每次构建都是全新环境,无缓存。你可以在本地模拟Travis的无缓存构建,排查项目本身的问题:

./gradlew clean build --no-build-cache

如果本地也报错,说明项目Gradle配置确实有问题;如果本地正常,大概率是Travis环境的网络或镜像问题,可以尝试在Gradle配置里添加仓库的HTTPS地址,避免HTTP重定向异常:

repositories {
    google()
    jcenter { url "https://jcenter.bintray.com/" }
    mavenCentral { url "https://repo1.maven.org/maven2/" }
}

4. 排查分支合并后的配置变更

回顾修复分支的过程:回滚master后合并到分支修复,有没有可能修复时只解决了本地问题,没把仓库配置的修改同步到分支?导致再次PR到master时,master分支的Gradle配置依然缺失必要仓库,触发Travis构建失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:43:35