11name : Build KingWatch APK
2-
32on :
43 push :
54 branches : [ main ]
6- pull_request :
7- branches : [ main ]
85 workflow_dispatch :
9-
106jobs :
117 build :
128 runs-on : ubuntu-22.04
13- timeout-minutes : 60
14-
9+ env :
10+ JAVA_HOME : /usr/lib/jvm/java-17-openjdk-amd64
1511 steps :
16- # ── 1. Checkout ──────────────────────────────────────────────────────────
17- - name : Checkout repository
18- uses : actions/checkout@v4
19-
20- # ── 2. Python ────────────────────────────────────────────────────────────
21- - name : Set up Python 3.10
22- uses : actions/setup-python@v5
12+ - uses : actions/checkout@v4
13+ - uses : actions/setup-python@v5
2314 with :
24- python-version : " 3.10"
25-
26- # ── 3. System dependencies ───────────────────────────────────────────────
27- - name : Install system dependencies
15+ python-version : ' 3.10'
16+ - name : Install dependencies
2817 run : |
2918 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
41-
42- # ── 4. Java ──────────────────────────────────────────────────────────────
43- - name : Set JAVA_HOME
44- run : |
45- echo "JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" >> $GITHUB_ENV
46-
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
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 }}
19+ sudo apt-get install -y git zip unzip openjdk-17-jdk build-essential libssl-dev libffi-dev python3-dev autoconf libtool pkg-config cmake
20+ pip install --upgrade pip
21+ pip install buildozer==1.5.0 cython==0.29.33
22+ - name : Install Android SDK
8823 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: $?"
98-
99- # ── 10. Show build result ────────────────────────────────────────────────
100- - name : Check APK produced
24+ mkdir -p $HOME/.buildozer/android/platform/android-sdk/cmdline-tools
25+ cd $HOME/.buildozer/android/platform/android-sdk/cmdline-tools
26+ wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
27+ unzip -q commandlinetools-linux-11076708_latest.zip
28+ mv cmdline-tools latest
29+ yes | $HOME/.buildozer/android/platform/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses || true
30+ $HOME/.buildozer/android/platform/android-sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-33" "build-tools;33.0.2" "platform-tools"
31+ - name : Build APK
10132 run : |
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()
33+ export ANDROID_SDK_ROOT=$HOME/.buildozer/android/platform/android-sdk
34+ buildozer android debug 2>&1 | tee build.log
35+ - name : Upload APK
11036 uses : actions/upload-artifact@v4
11137 with :
112- name : KingWatch-Pro-debug
38+ name : KingWatch-APK
11339 path : bin/*.apk
11440 if-no-files-found : error
115-
116- # ── 12. Upload full log (always) ─────────────────────────────────────────
117- - name : Upload build log
41+ - name : Upload log
11842 if : always()
11943 uses : actions/upload-artifact@v4
12044 with :
12145 name : build-log
122- path : build_output.log
123- if-no-files-found : warn
46+ path : build.log
0 commit comments