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

使用GitHub Actions构建Android应用时遇API级别兼容错误求助

解决GitHub Actions编译Android时的API级别兼容问题

核心问题分析

代码中使用了java.lang.Iterable#forEach方法,该方法要求最低API级别24,但你的项目minSdk设为23。本地能正常构建但GitHub Actions失败,大概率是CI环境的编译配置、Gradle版本或检查规则与本地不一致,比如本地开启了Java 8脱糖支持但CI未生效,或是CI强制执行了更严格的Lint检查。

具体解决方法

方法1:启用Java 8核心库脱糖支持

Iterable.forEach是Java 8新增特性,Android API23及以下需通过脱糖实现兼容。确保App级build.gradle配置完整:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

    coreLibraryDesugaringEnabled true
}

dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}

同时在GitHub Actions构建步骤中添加./gradlew clean清除缓存,避免旧配置残留:

- name: Build with Gradle
  run: |
    ./gradlew clean
    ./gradlew assembleDebug

方法2:替换为API23兼容的循环写法

如果不想启用脱糖,直接将forEach替换为传统for循环:

// 原代码
entryValues.forEach { entryValue ->
    // 逻辑处理
}

// 兼容写法
for (entryValue in entryValues) {
    // 逻辑处理
}

方法3:调整Lint检查规则(临时方案)

如果只是Lint报错而非编译失败,可在App级build.gradle中忽略该检查:

android {
    lintOptions {
        disable 'NewApi'
    }
}

注意:此方法仅绕过检查,API23设备上运行仍可能崩溃,不推荐长期使用。

方法4:对齐CI与本地的Gradle环境

确保GitHub Actions使用的JDK、Gradle版本与本地一致,在构建yml中明确指定:

steps:
  - uses: actions/checkout@v4
  - name: Set up JDK 17
    uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
      cache: gradle
  - name: Build with Gradle
    run: ./gradlew assembleDebug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:15:01