Skip to content

Commit 45b98fd

Browse files
authored
Update android.yml
1 parent 5b2076c commit 45b98fd

1 file changed

Lines changed: 111 additions & 26 deletions

File tree

.github/workflows/android.yml

Lines changed: 111 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,123 @@
11
name: Build KingWatch APK
2+
23
on:
34
push:
4-
branches: [main]
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
58
workflow_dispatch:
9+
610
jobs:
711
build:
812
runs-on: ubuntu-22.04
9-
env:
10-
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
11-
ANDROID_SDK_ROOT: /home/runner/.buildozer/android/platform/android-sdk
13+
timeout-minutes: 60
14+
1215
steps:
13-
- uses: actions/checkout@v4
14-
- uses: actions/setup-python@v5
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
1523
with:
16-
python-version: '3.10'
17-
- run: |
24+
python-version: "3.10"
25+
26+
# ── 3. System dependencies ───────────────────────────────────────────────
27+
- name: Install system dependencies
28+
run: |
1829
sudo apt-get update -qq
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 buildozer==1.5.0 cython==0.29.33
21-
SDK=$HOME/.buildozer/android/platform/android-sdk
22-
mkdir -p $SDK/cmdline-tools
23-
cd $SDK/cmdline-tools
24-
wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
25-
unzip -q commandlinetools-linux-11076708_latest.zip
26-
mv cmdline-tools latest
27-
yes | ./latest/bin/sdkmanager --licenses || true
28-
./latest/bin/sdkmanager "platforms;android-33" "build-tools;33.0.2" "platform-tools"
29-
mkdir -p $SDK/tools/bin
30-
ln -sf $SDK/cmdline-tools/latest/bin/sdkmanager $SDK/tools/bin/sdkmanager
31-
buildozer android debug 2>&1 | tee build.log
32-
- uses: actions/upload-artifact@v4
33-
if: always()
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
3457
with:
35-
name: apk-or-log
3658
path: |
37-
bin/*.apk
38-
build.log
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: $?"
98+
99+
# ── 10. Show build result ────────────────────────────────────────────────
100+
- name: Check APK produced
101+
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()
110+
uses: actions/upload-artifact@v4
111+
with:
112+
name: KingWatch-Pro-debug
113+
path: bin/*.apk
114+
if-no-files-found: error
115+
116+
# ── 12. Upload full log (always) ─────────────────────────────────────────
117+
- name: Upload build log
118+
if: always()
119+
uses: actions/upload-artifact@v4
120+
with:
121+
name: build-log
122+
path: build_output.log
123+
if-no-files-found: warn

0 commit comments

Comments
 (0)