Skip to content

Update buildozer.spec #78

Update buildozer.spec

Update buildozer.spec #78

Workflow file for this run

name: Build KingWatch APK
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-22.04
timeout-minutes: 60
steps:
# ── 1. Checkout ──────────────────────────────────────────────────────────
- name: Checkout repository
uses: actions/checkout@v4
# ── 2. Python ────────────────────────────────────────────────────────────
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
# ── 3. System dependencies ───────────────────────────────────────────────
- name: Install system dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
git zip unzip curl wget \
build-essential ccache \
libffi-dev libssl-dev \
libsqlite3-dev \
autoconf libtool \
pkg-config \
cmake \
libltdl-dev \
python3-dev \
openjdk-17-jdk-headless
# ── 4. Java ──────────────────────────────────────────────────────────────
- name: Set JAVA_HOME
run: |
echo "JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" >> $GITHUB_ENV
# ── 5. pip packages ──────────────────────────────────────────────────────
- name: Install Python build tools
run: |
pip install --upgrade pip setuptools wheel
pip install buildozer==1.5.0
pip install cython==0.29.33
# ── 6. Android SDK / NDK cache ───────────────────────────────────────────
- name: Cache Android SDK, NDK and buildozer global
uses: actions/cache@v4
with:
path: |
~/.buildozer/android/platform/android-sdk
~/.buildozer/android/platform/android-ndk-r25b
key: android-sdk-ndk-${{ runner.os }}-r25b-sdk33
restore-keys: |
android-sdk-ndk-${{ runner.os }}-
# ── 7. Buildozer local cache ─────────────────────────────────────────────
- name: Cache buildozer local build
uses: actions/cache@v4
with:
path: .buildozer
key: buildozer-${{ runner.os }}-${{ hashFiles('buildozer.spec') }}-${{ hashFiles('main.py') }}
restore-keys: |
buildozer-${{ runner.os }}-${{ hashFiles('buildozer.spec') }}-
buildozer-${{ runner.os }}-
# ── 8. Accept Android licenses ───────────────────────────────────────────
- name: Pre-accept Android SDK licenses
run: |
mkdir -p ~/.buildozer/android/platform/android-sdk/licenses
echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > ~/.buildozer/android/platform/android-sdk/licenses/android-sdk-license
echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> ~/.buildozer/android/platform/android-sdk/licenses/android-sdk-license
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >> ~/.buildozer/android/platform/android-sdk/licenses/android-sdk-license
echo "84831b9409646a918e30573bab4c9c91346d8abd" > ~/.buildozer/android/platform/android-sdk/licenses/android-sdk-preview-license
# ── 9. Build APK ─────────────────────────────────────────────────────────
- name: Build debug APK with buildozer
env:
JAVA_HOME: ${{ env.JAVA_HOME }}
run: |
# Show spec for debug
echo "=== buildozer.spec ==="
cat buildozer.spec
echo "=== main.py head ==="
head -50 main.py || echo "main.py not found!"
echo "====================="
# Run buildozer
buildozer -v android debug 2>&1 | tee build_output.log
echo "Exit code: $?"
# ── 10. Show build result ────────────────────────────────────────────────
- name: Check APK produced
run: |
echo "Contents of bin/:"
ls -lh bin/ 2>/dev/null || echo "bin/ directory does not exist"
echo "APK files:"
find . -name "*.apk" 2>/dev/null || echo "No APK found"
# ── 11. Upload APK ───────────────────────────────────────────────────────
- name: Upload APK artifact
if: success()
uses: actions/upload-artifact@v4
with:
name: KingWatch-Pro-debug
path: bin/*.apk
if-no-files-found: error
# ── 12. Upload full log (always) ─────────────────────────────────────────
- name: Upload build log
if: always()
uses: actions/upload-artifact@v4
with:
name: build-log
path: build_output.log
if-no-files-found: warn