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

GitHub Actions构建Android项目遇Java版本兼容问题求助

解决思路

1. 全局配置GitHub Actions的Java 17环境

不要仅在单个uses动作下配置Java版本,需在Job开头通过setup-java全局设置,确保整个构建流程的Gradle运行环境使用Java 17。示例配置:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: gradle # 可选,用于加速后续构建

注意:Gradle运行依赖的JVM版本,和项目编译的Java版本是两个独立概念,必须保证Gradle本身运行在Java 17环境下,才能兼容高版本的Navigation插件。

2. 匹配Gradle与插件版本

navigation-safe-args-gradle-plugin:2.7.7需要Gradle 8.0及以上版本支持,修改gradle/wrapper/gradle-wrapper.properties中的Gradle版本:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip

同时确保项目根目录的build.gradle(或build.gradle.kts)中AGP版本与Navigation插件版本匹配,比如使用AGP 8.2.0及以上:

plugins {
    id 'com.android.application' version '8.2.0' apply false
    id 'androidx.navigation.safeargs' version '2.7.7' apply false
}

3. 强制Gradle使用指定Java版本

在项目根目录的gradle.properties中添加配置,避免Runner默认Java环境干扰:

org.gradle.java.home=/usr/lib/jvm/temurin-17-jdk-amd64 # 对应GitHub Runner中temurin 17的默认安装路径

也可以在构建步骤中通过环境变量指定:

- name: Execute lintDebug
  env:
    JAVA_HOME: ${{ steps.setup-java.outputs.path }}
  run: ./gradlew lintDebug

4. 排查自托管Runner的环境问题

如果使用自托管Runner,需确认:

  • 机器已安装temurin 17版本的Java
  • 环境变量JAVA_HOME指向Java 17的安装目录
  • PATH中Java 17的优先级高于其他版本
  • 在构建步骤前添加java -version和echo $JAVA_HOME命令,输出日志确认版本是否正确

5. 清理缓存后重新构建

GitHub Actions的缓存可能残留旧环境或依赖数据,可执行清理命令后重新构建:

- name: Clean Gradle cache
  run: ./gradlew clean lintDebug --no-build-cache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:57:43