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

如何在GitHub Workflow中配置自定义android.jar构建Android应用

问题排查与修复方案

核心问题分析

你的Workflow无法替换android.jar主要有以下几个原因:

  • 路径定位错误:find . -type f -name 'android.jar'只会在当前仓库目录下查找,但GitHub Runner的Android SDK默认安装在系统路径(而非项目目录),根本找不到目标文件。
  • curl命令参数错误:curl -o的用法是curl -o <输出文件名> <URL>,你把输出文件名和URL写反了,导致文件下载失败。
  • 未预先安装目标SDK平台:Workflow没有确保你需要的Android API 35平台已安装,直接替换会因为文件不存在而报错。
  • 潜在权限问题:系统SDK目录可能需要提升权限才能修改文件。

修正后的Workflow代码

name: Android CI

on: [workflow_dispatch]

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

    - name: Setup Gradle to generate and submit dependency graphs
      uses: gradle/actions/setup-gradle@v4
      with:
        dependency-graph: generate-and-submit

    - name: Grant execute permission for gradlew
      run: chmod +x gradlew

    - name: Install Android SDK Platform 35
      uses: android-actions/setup-android@v3
      with:
        components: platforms;android-35

    - name: Replace android.jar
      shell: bash
      run: |
        # 定义目标SDK路径(API35)
        SDK_PLATFORM_PATH="$ANDROID_SDK_ROOT/platforms/android-35"
        JAR_PATH="$SDK_PLATFORM_PATH/android.jar"
        
        # 备份原文件(可选)
        sudo cp "$JAR_PATH" "$JAR_PATH.bak"
        
        # 删除原文件并下载替换包
        sudo rm "$JAR_PATH"
        sudo curl -o "$JAR_PATH" "https://github.com/Reginer/aosp-android-jar/raw/refs/heads/main/android-35/android.jar"
        
        # 验证替换结果
        ls -l "$SDK_PLATFORM_PATH" >> $GITHUB_STEP_SUMMARY

    - name: Build with Gradle
      run: ./gradlew build
      
    - name: Upload build reports
      uses: actions/upload-artifact@v4
      if: always()
      with:
        name: build-reports
        path: build/reports/

关键修改说明

  • 添加SDK安装步骤:使用android-actions/setup-android确保API35平台已安装,同时自动设置$ANDROID_SDK_ROOT环境变量。
  • 修正路径定位:直接通过环境变量$ANDROID_SDK_ROOT定位到SDK系统目录,无需模糊查找。
  • 修复curl命令:调整-o参数顺序,确保文件正确下载到目标路径。
  • 添加sudo权限:系统SDK目录需要管理员权限才能修改,所有文件操作前加上sudo。
  • 可选备份原文件:保留原android.jar的备份,方便排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:42:46