如何在GitHub Actions中安装AIDL解决Buildozer构建报错
解决GitHub Actions中Buildozer打包APK提示"Aidl not found"的问题
问题原因
你使用的ArtemSBulgakov/buildozer-action是在独立Docker容器中执行打包操作的,之前在Get Date步骤中通过apt安装的依赖仅作用于GitHub Actions的主机环境,并不会进入Buildozer运行的容器内部,因此容器内仍然缺少aidl工具。
解决方案
方法一:利用buildozer-action的extra_packages参数(推荐)
该Action提供了extra_packages参数,可直接在容器内部安装所需的系统依赖,无需手动操作容器环境。修改build.yml中的Build with Buildozer步骤:
- name: Build with Buildozer uses: ArtemSBulgakov/buildozer-action@v1 id: buildozer with: command: buildozer -v android debug buildozer_version: master extra_packages: build-essential libstdc++6 aidl
方法二:手动在容器内执行安装命令
如果需要更灵活的环境配置,可以在Buildozer打包步骤前,进入Action使用的容器执行依赖安装。不过这种方式不如方法一简洁,示例如下:
- name: Install dependencies in Buildozer container run: | docker run --rm -v $PWD:/app artemsbulgakov/buildozer-action:master \ apt-get update && apt-get install -y build-essential libstdc++6 aidl
验证修改后的完整build.yml
修改后的配置文件示例:
name: CI on: push: branches: [ main ] pull_request: branches: [ main ] schedule: - cron: '0 0 1,15 * *' jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Get Date id: get-date run: | echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")" shell: bash - name: Cache Buildozer global directory uses: actions/cache@v2 with: path: .buildozer_global key: buildozer-global-${{ hashFiles('buildozer.spec') }} - uses: actions/cache@v2 with: path: .buildozer key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('buildozer.spec') }} - name: Build with Buildozer uses: ArtemSBulgakov/buildozer-action@v1 id: buildozer with: command: buildozer -v android debug buildozer_version: master extra_packages: build-essential libstdc++6 aidl - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: package path: ${{ steps.buildozer.outputs.filename }}
内容的提问来源于stack exchange,提问作者Dolutio
相关产品推荐
相关产品推荐

