非Gradle根项目调用GitHub子Action生成APK遇路径错误求助
解决本地GitHub Action调用的路径与配置问题
看起来你遇到的核心问题是本地动作的命名规范和子动作的结构错误,结合你的项目结构,我来一步步帮你修正:
问题分析
你看到的错误提示Can't find 'action.yml', 'action.yaml' or 'Dockerfile',本质是两个原因:
- GitHub要求本地可复用动作的配置文件必须命名为
action.yml(或action.yaml),而你用的是child.yml,系统找不到它; - 你的
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
相关产品推荐
相关产品推荐

