如何在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
相关产品推荐
相关产品推荐

