@@ -3,61 +3,121 @@ name: Build KingWatch APK
33on :
44 push :
55 branches : [ main ]
6+ pull_request :
7+ branches : [ main ]
68 workflow_dispatch :
79
810jobs :
911 build :
1012 runs-on : ubuntu-22.04
13+ timeout-minutes : 60
1114
1215 steps :
13- - uses : actions/checkout@v4
16+ # ── 1. Checkout ──────────────────────────────────────────────────────────
17+ - name : Checkout repository
18+ uses : actions/checkout@v4
1419
15- - uses : actions/setup-python@v5
20+ # ── 2. Python ────────────────────────────────────────────────────────────
21+ - name : Set up Python 3.10
22+ uses : actions/setup-python@v5
1623 with :
17- python-version : ' 3.10'
24+ python-version : " 3.10"
1825
26+ # ── 3. System dependencies ───────────────────────────────────────────────
1927 - name : Install system dependencies
2028 run : |
2129 sudo apt-get update -qq
22- sudo apt-get install -y git zip unzip \
23- openjdk-17-jdk-headless \
24- build-essential libssl-dev libffi-dev \
25- python3-dev autoconf libtool pkg-config cmake
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
2641
27- - name : Install Android SDK cmdline-tools
28- run : |
29- mkdir -p $HOME/.buildozer/android/platform/android-sdk/cmdline-tools
30- cd $HOME/.buildozer/android/platform/android-sdk/cmdline-tools
31- wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
32- unzip -q commandlinetools-linux-11076708_latest.zip
33- mv cmdline-tools latest
34- echo "$HOME/.buildozer/android/platform/android-sdk/cmdline-tools/latest/bin" >> $GITHUB_PATH
35-
36- - name : Accept Android licenses
42+ # ── 4. Java ──────────────────────────────────────────────────────────────
43+ - name : Set JAVA_HOME
3744 run : |
38- yes | $HOME/.buildozer/android/platform/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses || true
39- $HOME/.buildozer/android/platform/android-sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-33" "build-tools;33.0.2" "platform-tools"
45+ echo "JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" >> $GITHUB_ENV
4046
47+ # ── 5. pip packages ──────────────────────────────────────────────────────
4148 - name : Install Python build tools
4249 run : |
43- pip install --upgrade pip
44- pip install buildozer==1.5.0 cython==0.29.33
50+ pip install --upgrade pip setuptools wheel
51+ pip install buildozer==1.5.0
52+ pip install cython==0.29.33
53+
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 }}-
64+
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 }}-
74+
75+ # ── 8. Accept Android licenses ───────────────────────────────────────────
76+ - name : Pre-accept Android SDK licenses
77+ run : |
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
83+
84+ # ── 9. Build APK ─────────────────────────────────────────────────────────
85+ - name : Build debug APK with buildozer
86+ env :
87+ JAVA_HOME : ${{ env.JAVA_HOME }}
88+ run : |
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: $?"
4598
46- - name : Build APK
99+ # ── 10. Show build result ────────────────────────────────────────────────
100+ - name : Check APK produced
47101 run : |
48- export ANDROID_SDK_ROOT=$HOME/.buildozer/android/platform/android-sdk
49- buildozer android debug 2>&1 | tee build.log
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"
50106
51- - name : Upload APK
107+ # ── 11. Upload APK ───────────────────────────────────────────────────────
108+ - name : Upload APK artifact
109+ if : success()
52110 uses : actions/upload-artifact@v4
53111 with :
54- name : KingWatch-APK
112+ name : KingWatch-Pro-debug
55113 path : bin/*.apk
56114 if-no-files-found : error
57115
58- - name : Upload log
116+ # ── 12. Upload full log (always) ─────────────────────────────────────────
117+ - name : Upload build log
59118 if : always()
60119 uses : actions/upload-artifact@v4
61120 with :
62121 name : build-log
63- path : build.log
122+ path : build_output.log
123+ if-no-files-found : warn
0 commit comments