.gitignore | ||
action.yml | ||
Dockerfile | ||
entrypoint.sh | ||
LICENSE | ||
patches.py | ||
README.md |
Buildozer action
Build your Python/Kivy applications for Android with Buildozer. This action uses official Buildozer Docker image, but adds some features and patches to use in GitHub Actions.
Inputs
command
Required Command to start Buildozer.
- Default:
buildozer android debug
(iOS and OSX is not supported because Docker cannot run on MacOS). - For more commands use
;
as delimiter:python3 setup.py build_ext --inplace; buildozer android debug
.
workdir
Required Working directory where buildozer.spec is located.
- Default:
.
(top directory). - Set to
src
if buildozer.spec is insrc
directory.
buildozer_version
Required Version of Buildozer to install.
- Default:
stable
(latest release on PyPI,pip install buildozer
). - Set to
master
to use master branch (pip install git+https://github.com/kivy/buildozer.git@master
). - Set to tag name
1.2.0
to use specific release (pip install git+https://github.com/kivy/buildozer.git@1.2.0
). - Set to commit hash
94cfcb8
to use specific commit (pip install git+https://github.com/kivy/buildozer.git@94cfcb8
). - Set to git+ address
git+https://github.com/username/buildozer.git@master
to use fork. - Set to directory name
./my_buildozer
to install from local path (pip install ./my_buildozer
). - Set to nothing
''
to not install buildozer
Outputs
filename
Filename of built package relative to repository root.
- Example:
test_app/bin/testapp-0.1-armeabi-v7a-debug.apk
Environment variables
You can set environment variables to change Buildozer settings. See Buildozer Readme for more information.
Example (change Android architecture):
env:
APP_ANDROID_ARCH: armeabi-v7a
Caching
You can set up cache for Buildozer global and local directories. Global directory is in root of repository. Local directory is in workdir.
- Global:
.buildozer-global
(sdk, ndk, platform-tools) - Local:
test_app/.buildozer
(dependencies, build temp, not recommended to cache)
I don't recommend to cache local buildozer directory because Buildozer doesn't automatically update dependencies to latest version.
Use cache only if it speeds up your workflow! Usually this only adds 1-3 minutes to job running time, so I don't use it.
Example:
- name: Cache Buildozer global directory
uses: actions/cache@v2
with:
path: .buildozer-global
key: buildozer-global-${{ hashFiles('test_app/buildozer.spec') }} # Replace with your path
Example usage
- name: Build with Buildozer
uses: ArtemSBulgakov/buildozer-action@v1
id: buildozer
with:
command: buildozer android debug
workir: src
buildozer_version: stable
Full workflow
name: Build
on: [push, pull_request]
jobs:
# Build job. Builds app for Android with Buildozer
build-android:
name: Build for Android
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build with Buildozer
uses: ArtemSBulgakov/buildozer-action@v1
id: buildozer
with:
workdir: test_app
buildozer_version: stable
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: package
path: ${{ steps.buildozer.outputs.filename }}
License
ArtemSBulgakov/buildozer-action is released under the terms of the MIT License.