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

非Gradle根项目调用GitHub子Action生成APK遇路径错误求助

解决本地GitHub Action调用的路径与配置问题

看起来你遇到的核心问题是本地动作的命名规范和子动作的结构错误,结合你的项目结构,我来一步步帮你修正:

问题分析

你看到的错误提示Can't find 'action.yml', 'action.yaml' or 'Dockerfile',本质是两个原因:

  1. GitHub要求本地可复用动作的配置文件必须命名为action.yml(或action.yaml),而你用的是child.yml,系统找不到它;
  2. 你的child.yml是按照独立工作流的格式写的(包含on和jobs),但本地动作应该是复合动作,不需要这些顶层字段,直接定义步骤即可。

另外,子动作中的路径也需要调整,因为主工作流已经checkout了整个仓库,运行时的工作目录是项目根目录,所以gradle命令和apk路径要对应android/子目录。

解决方案

1. 重命名并修改子动作配置文件

将android/.github/actions/apk/child.yml重命名为android/.github/actions/apk/action.yml,然后替换内容为以下结构(去掉on和jobs,直接写steps,并调整路径):

name: Build Android Debug APK
description: Builds and uploads Android debug APK from the android/ directory

steps:
  - name: Set up JDK 11
    uses: actions/setup-java@v1
    with:
      java-version: '11'

  - name: Cache Gradle dependencies
    uses: actions/cache@v2
    with:
      path: |
        ~/.gradle/caches
        ~/.gradle/wrapper
      key: ${{ runner.os }}-${{ hashFiles('android/**/*.gradle*') }}-${{ hashFiles('android/gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('android/buildSrc/**/*.kt') }}

  - name: Change Gradle wrapper permissions
    run: chmod +x ./android/gradlew
    working-directory: ${{ github.workspace }}

  - name: Build debug APK
    run: ./gradlew assembleDebug
    working-directory: ./android

  - name: Upload debug APK artifact
    uses: actions/upload-artifact@v2
    with:
      name: debug-apk
      path: ./android/app/build/outputs/apk/debug/app-debug.apk

2. 确认主工作流root.yml的配置

你的主工作流基本正确,只需要确保actions/checkout拉取了完整代码(默认是对的),调用路径无误:

name: Use Custom Android APK Action
on:
  push:
    branches:
      - ci_test
jobs:
  test_build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout full repository
        uses: actions/checkout@v4  # 建议升级到最新版本

      - name: Run custom APK build action
        uses: ./android/.github/actions/apk

关键修改点说明

  • 文件名规范:本地动作必须用action.yml作为配置文件名,这是GitHub Action的强制要求;
  • 复合动作结构:子动作不需要on和jobs,因为它是被主工作流调用的,直接定义steps即可;
  • 路径调整:所有命令和文件路径都要基于项目根目录,通过working-directory指定在android/目录下执行gradle命令,避免路径错误;
  • 缓存路径哈希:修改hashFiles的路径为android/**/*,确保只针对android目录下的gradle文件生成缓存key,更精准。

这样调整后,主工作流就能正确找到并执行子动作,生成并上传APK制品了。

内容的提问来源于stack exchange,提问作者P.Juni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:55:38