Skip to content

Android Build

Android Build #108

name: Android Build
on:
workflow_dispatch:
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
# Cache Buildozer global directory
- name: Cache Buildozer global directory
uses: actions/cache@v4
with:
path: ~/.buildozer
key: ${{ runner.os }}-buildozer-global
restore-keys: |
${{ runner.os }}-buildozer-global
# Cache Buildozer directory in app
- name: Cache Buildozer directory in app
uses: actions/cache@v4
with:
path: .buildozer
key: ${{ runner.os }}-buildozer-app-v2
restore-keys: |
${{ runner.os }}-buildozer-app
# Cache Android SDK
- name: Cache Android SDK
uses: actions/cache@v4
with:
path: ~/.buildozer/android/platform/android-sdk
key: ${{ runner.os }}-android-sdk
restore-keys: |
${{ runner.os }}-android-sdk
# Install dependencies
- name: Install dependencies
run: |
sudo apt update
sudo apt-get install -y \
build-essential \
git \
ffmpeg \
libsdl2-dev \
libsdl2-image-dev \
libsdl2-mixer-dev \
libsdl2-ttf-dev \
libportmidi-dev \
libswscale-dev \
libavformat-dev \
libavcodec-dev \
libunwind-dev \
zlib1g-dev \
libsqlite3-dev \
sqlite3 \
bzip2 \
libbz2-dev \
openssl \
libgdbm-dev \
libgdbm-compat-dev \
liblzma-dev \
libreadline-dev \
uuid-dev \
libgstreamer1.0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
zip \
unzip \
autoconf \
libtool \
pkg-config \
libncurses5-dev \
libncursesw5-dev \
libtinfo6 \
cmake \
libffi-dev \
libssl-dev \
automake
# Setup Java 17
- name: Setup Java 17 required by Gradle
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
# Setup Python
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
# Install pip dependencies
- name: Install pip dependencies
run: |
pip install --upgrade pip
pip install buildozer cython==0.29.33
# Clean build
- name: Clean build
run: |
rm -rf .buildozer
rm -rf bin
# Build APK
- name: Build with Buildozer
run: |
yes | buildozer -v android debug
# Upload artifact (ZIP v Actions)
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: package
path: |
bin/*.apk
bin/*.aab
retention-days: 3
# 🚀 GitHub Release
- name: Upload APK to GitHub Release
if: github.ref == 'refs/heads/main'
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ github.run_number }}
name: PyServe Build #${{ github.run_number }}
files: bin/*.apk
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}