Skip to content

Commit 8b01d20

Browse files
authored
Update android.yml
1 parent e42e6df commit 8b01d20

1 file changed

Lines changed: 89 additions & 36 deletions

File tree

.github/workflows/android.yml

Lines changed: 89 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,69 +2,122 @@ name: Build KingWatch APK
22

33
on:
44
push:
5-
branches:
6-
- main
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
78
workflow_dispatch:
89

910
jobs:
1011
build:
1112
runs-on: ubuntu-22.04
13+
timeout-minutes: 60
1214

1315
steps:
14-
16+
# ── 1. Checkout ──────────────────────────────────────────────────────────
1517
- name: Checkout repository
1618
uses: actions/checkout@v4
1719

18-
- name: Setup Python
20+
# ── 2. Python ────────────────────────────────────────────────────────────
21+
- name: Set up Python 3.10
1922
uses: actions/setup-python@v5
2023
with:
2124
python-version: "3.10"
2225

26+
# ── 3. System dependencies ───────────────────────────────────────────────
2327
- name: Install system dependencies
2428
run: |
25-
sudo apt update
26-
sudo apt install -y \
27-
git zip unzip openjdk-17-jdk \
28-
autoconf libtool pkg-config \
29-
zlib1g-dev libncurses5-dev libncursesw5-dev \
30-
libtinfo5 cmake libffi-dev libssl-dev \
31-
build-essential ccache wget
29+
sudo apt-get update -qq
30+
sudo apt-get install -y --no-install-recommends \
31+
git zip unzip curl wget \
32+
build-essential ccache \
33+
libffi-dev libssl-dev \
34+
libsqlite3-dev \
35+
autoconf libtool \
36+
pkg-config \
37+
cmake \
38+
libltdl-dev \
39+
python3-dev \
40+
openjdk-17-jdk-headless
3241
33-
- name: Install Android SDK
42+
# ── 4. Java ──────────────────────────────────────────────────────────────
43+
- name: Set JAVA_HOME
3444
run: |
35-
mkdir -p $HOME/android-sdk/cmdline-tools
36-
cd $HOME/android-sdk/cmdline-tools
37-
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
38-
unzip commandlinetools-linux-*_latest.zip
39-
mv cmdline-tools latest
45+
echo "JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" >> $GITHUB_ENV
4046
41-
echo "ANDROID_HOME=$HOME/android-sdk" >> $GITHUB_ENV
42-
echo "$HOME/android-sdk/cmdline-tools/latest/bin" >> $GITHUB_PATH
43-
echo "$HOME/android-sdk/platform-tools" >> $GITHUB_PATH
47+
# ── 5. pip packages ──────────────────────────────────────────────────────
48+
- name: Install Python build tools
49+
run: |
50+
pip install --upgrade pip setuptools wheel
51+
pip install buildozer==1.5.0
52+
pip install cython==0.29.33
4453
45-
- name: Accept Android licenses
46-
run: yes | sdkmanager --licenses
54+
# ── 6. Android SDK / NDK cache ───────────────────────────────────────────
55+
- name: Cache Android SDK, NDK and buildozer global
56+
uses: actions/cache@v4
57+
with:
58+
path: |
59+
~/.buildozer/android/platform/android-sdk
60+
~/.buildozer/android/platform/android-ndk-r25b
61+
key: android-sdk-ndk-${{ runner.os }}-r25b-sdk33
62+
restore-keys: |
63+
android-sdk-ndk-${{ runner.os }}-
4764
48-
- name: Install Python dependencies
49-
run: |
50-
pip install --upgrade pip
51-
pip install cython==0.29.36 buildozer virtualenv
65+
# ── 7. Buildozer local cache ─────────────────────────────────────────────
66+
- name: Cache buildozer local build
67+
uses: actions/cache@v4
68+
with:
69+
path: .buildozer
70+
key: buildozer-${{ runner.os }}-${{ hashFiles('buildozer.spec') }}-${{ hashFiles('main.py') }}
71+
restore-keys: |
72+
buildozer-${{ runner.os }}-${{ hashFiles('buildozer.spec') }}-
73+
buildozer-${{ runner.os }}-
5274
53-
- name: Clean previous build
75+
# ── 8. Accept Android licenses ───────────────────────────────────────────
76+
- name: Pre-accept Android SDK licenses
5477
run: |
55-
rm -rf .buildozer
56-
rm -rf bin
78+
mkdir -p ~/.buildozer/android/platform/android-sdk/licenses
79+
echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > ~/.buildozer/android/platform/android-sdk/licenses/android-sdk-license
80+
echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> ~/.buildozer/android/platform/android-sdk/licenses/android-sdk-license
81+
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >> ~/.buildozer/android/platform/android-sdk/licenses/android-sdk-license
82+
echo "84831b9409646a918e30573bab4c9c91346d8abd" > ~/.buildozer/android/platform/android-sdk/licenses/android-sdk-preview-license
5783
58-
- name: Set JAVA_HOME
84+
# ── 9. Build APK ─────────────────────────────────────────────────────────
85+
- name: Build debug APK with buildozer
86+
env:
87+
JAVA_HOME: ${{ env.JAVA_HOME }}
5988
run: |
60-
echo "JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" >> $GITHUB_ENV
89+
# Show spec for debug
90+
echo "=== buildozer.spec ==="
91+
cat buildozer.spec
92+
echo "=== main.py head ==="
93+
head -50 main.py || echo "main.py not found!"
94+
echo "====================="
95+
# Run buildozer
96+
buildozer -v android debug 2>&1 | tee build_output.log
97+
echo "Exit code: $?"
6198
62-
- name: Build APK
99+
# ── 10. Show build result ────────────────────────────────────────────────
100+
- name: Check APK produced
63101
run: |
64-
buildozer android debug
102+
echo "Contents of bin/:"
103+
ls -lh bin/ 2>/dev/null || echo "bin/ directory does not exist"
104+
echo "APK files:"
105+
find . -name "*.apk" 2>/dev/null || echo "No APK found"
106+
107+
# ── 11. Upload APK ───────────────────────────────────────────────────────
108+
- name: Upload APK artifact
109+
if: success()
110+
uses: actions/upload-artifact@v4
111+
with:
112+
name: KingWatch-Pro-debug
113+
path: bin/*.apk
114+
if-no-files-found: error
65115

66-
- name: Upload APK
116+
# ── 12. Upload full log (always) ─────────────────────────────────────────
117+
- name: Upload build log
118+
if: always()
67119
uses: actions/upload-artifact@v4
68120
with:
69-
name: kingwatch-apk
70-
path: bin/*.apk
121+
name: build-log
122+
path: build_output.log
123+
if-no-files-found: warn

0 commit comments

Comments
 (0)