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

Android自动化构建引入Kotlin后Gradle插件缺失间歇性故障排查

问题分析与解决方案

看起来你遇到的是构建服务器环境下Gradle无法解析Android/Kotlin插件的典型问题——本地正常、服务器异常,且命令行与Android Studio报错不一致,核心原因基本围绕「服务器环境无法正确获取插件依赖」展开,下面是一步步的排查和解决思路:

核心原因推测

  1. 仓库访问障碍:服务器无法正常访问Google/Maven仓库,导致Gradle下载不到com.android.application和kotlin-android插件;
  2. Gradle缓存损坏:服务器全局或项目本地的Gradle缓存文件损坏,插件无法被正确读取;
  3. 权限不足:Jenkins运行用户没有项目目录或Gradle缓存目录的读写权限;
  4. 环境变量配置缺失:服务器未正确设置ANDROID_HOME等关键环境变量,导致Gradle无法关联SDK工具。

分步解决方案

1. 修复仓库访问配置

首先确认服务器能访问插件所在的仓库,建议先把根目录build.gradle中的google()简写替换为完整的Maven地址(部分环境对简写支持不佳):

buildscript {
    ext.kotlin_version = '1.2.10'
    repositories {
        // 替换google()为完整地址
        maven { url 'https://dl.google.com/dl/android/maven2/' }
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'io.fabric.tools:gradle:1.25.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        maven { url 'https://dl.google.com/dl/android/maven2/' }
        jcenter()
    }
}

如果服务器需要代理才能访问外网,在项目根目录创建gradle.properties文件,添加代理配置:

systemProp.http.proxyHost=你的代理地址
systemProp.http.proxyPort=代理端口
systemProp.https.proxyHost=你的代理地址
systemProp.https.proxyPort=代理端口
# 若代理需要认证,添加以下两行
# systemProp.http.proxyUser=代理用户名
# systemProp.http.proxyPassword=代理密码

2. 清理Gradle缓存并重新下载

服务器上的Gradle缓存很可能已损坏,执行以下命令强制清理并刷新依赖:

# 清理项目缓存并刷新依赖
./gradlew clean build --refresh-dependencies

# 清理全局Gradle缓存(Windows服务器)
rd /s /q C:\Users\Jenkins运行用户\.gradle\caches
# Linux服务器执行
rm -rf ~/.gradle/caches/

之后重新运行构建命令,让Gradle重新下载所有插件和依赖。

3. 检查Jenkins用户权限

确保Jenkins的运行用户对项目目录、Gradle缓存目录有完整的读写权限:

  • Windows服务器:右键项目文件夹 → 属性 → 安全 → 添加Jenkins用户(通常是LOCAL SERVICE或自定义用户),赋予「读取、写入、修改」权限;
  • Linux服务器:执行命令递归修改目录权限:
    chown -R jenkins:jenkins /你的项目路径
    chown -R jenkins:jenkins ~/.gradle
    

4. 验证Gradle Wrapper配置

检查项目根目录gradle/wrapper/gradle-wrapper.properties文件,确认distributionUrl指向正确的Gradle 4.1版本:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

如果文件缺失或URL错误,重新生成Wrapper:

./gradlew wrapper --gradle-version 4.1 --distribution-type all

将生成的文件提交到版本控制,确保Jenkins拉取的代码包含正确的Wrapper配置。

5. 手动指定Android SDK路径

服务器可能未正确设置ANDROID_HOME环境变量,执行构建时手动指定:

# Windows服务器
set ANDROID_HOME=C:\你的SDK安装路径
set PATH=%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%PATH%
./gradlew assembleFlavour1Flavour2

# Linux服务器
export ANDROID_HOME=/你的SDK安装路径
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH
./gradlew assembleFlavour1Flavour2

也可以在Jenkins的构建配置中添加全局环境变量,直接指定ANDROID_HOME路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:20:15