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

GitHub Actions自托管Linux构建KMM项目遇依赖解析错误

解决GitHub Actions自托管Linux运行器构建KMM项目时无法下载Kotlin Native预构建包的问题

问题现象

在GitHub Actions自托管Linux运行器上执行./gradlew assembleRelease构建KMM项目时,出现以下错误:

:kmmmodule:detachedConfiguration3
Could not resolve :kotlin-native-prebuilt-linux-x86_64:1.8.10.
Required by:
project :kmmmodule
Could not resolve :kotlin-native-prebuilt-linux-x86_64:1.8.10.
Could not get resource 'https://download.jetbrains.com/kotlin/native/builds/releases/1.8.10/linux-x86_64/kotlin-native-prebuilt-linux-x86_64-1.8.10.tar.gz'.
18 actionable tasks: 18 executed
Could not HEAD 'https://download.jetbrains.com/kotlin/native/builds/releases/1.8.10/linux-x86_64/kotlin-native-prebuilt-linux-x86_64-1.8.10.tar.gz'.
download.jetbrains.com

切换Gradle(7.5、8.0、8.0.2等)和Kotlin(1.8.0、1.8.10、1.8.20等)版本后问题仍存在。

解决方案

1. 排查运行器网络连通性

  • 在自托管运行器终端执行以下命令,测试能否访问JetBrains下载地址:
    curl -I https://download.jetbrains.com/kotlin/native/builds/releases/1.8.10/linux-x86_64/kotlin-native-prebuilt-linux-x86_64-1.8.10.tar.gz
    
    若返回非200状态码,说明运行器网络受限,需:
    • 联系运维开放download.jetbrains.com的访问权限;
    • 若运行器处于代理环境,在项目根目录的gradle.properties中添加代理配置:
      systemProp.http.proxyHost=你的代理地址
      systemProp.http.proxyPort=代理端口
      systemProp.https.proxyHost=你的代理地址
      systemProp.https.proxyPort=代理端口
      # 若代理需要认证,添加以下配置
      systemProp.http.proxyUser=代理用户名
      systemProp.http.proxyPassword=代理密码
      systemProp.https.proxyUser=代理用户名
      systemProp.https.proxyPassword=代理密码
      

2. 手动缓存Kotlin Native预构建包

  • 本地复制缓存:在能正常构建的机器上,找到Gradle缓存目录下的对应包(路径为~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-native-prebuilt-linux-x86_64/1.8.10/[SHA1哈希值]/kotlin-native-prebuilt-linux-x86_64-1.8.10.tar.gz),复制到自托管运行器的相同路径。
  • Workflow中提前缓存:在GitHub Actions workflow里添加步骤,预下载并缓存该包:
    - name: Cache Kotlin Native
      id: cache-kotlin-native
      uses: actions/cache@v3
      with:
        path: ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-native-prebuilt-linux-x86_64
        key: ${{ runner.os }}-kotlin-native-1.8.10
    
    - name: Download Kotlin Native if not cached
      if: steps.cache-kotlin-native.outputs.cache-hit != 'true'
      run: |
        SHA1=$(curl -sL https://repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-native-prebuilt-linux-x86_64/1.8.10/kotlin-native-prebuilt-linux-x86_64-1.8.10.pom | grep -E '<sha1>(.*)</sha1>' | sed 's/<sha1>//g;s/<\/sha1>//g')
        mkdir -p ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-native-prebuilt-linux-x86_64/1.8.10/$SHA1
        curl -o ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-native-prebuilt-linux-x86_64/1.8.10/$SHA1/kotlin-native-prebuilt-linux-x86_64-1.8.10.tar.gz https://download.jetbrains.com/kotlin/native/builds/releases/1.8.10/linux-x86_64/kotlin-native-prebuilt-linux-x86_64-1.8.10.tar.gz
    
    注意:替换命令中的Kotlin版本号为项目实际使用的版本。

3. 检查Gradle仓库配置

确认项目settings.gradle.kts(或settings.gradle)中包含JetBrains官方仓库,避免镜像源缺失包:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url = uri("https://maven.pkg.jetbrains.space/public/p/kotlin/kotlin-dev") }
    }
}

4. 确认运行器系统架构

执行uname -m查看运行器架构:

  • 若输出为aarch64(ARM架构),需修改KMM配置使用对应架构的包,在build.gradle.kts中调整:
    kotlin {
        linuxArm64 {
            binaries {
                executable()
            }
        }
    }
    
    同时下载对应ARM版本的Kotlin Native包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:05:37