Skip to content

Commit c4b7f37

Browse files
authored
Update android.yml
1 parent 03c985b commit c4b7f37

1 file changed

Lines changed: 88 additions & 28 deletions

File tree

.github/workflows/android.yml

Lines changed: 88 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,61 +3,121 @@ name: Build KingWatch APK
33
on:
44
push:
55
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
68
workflow_dispatch:
79

810
jobs:
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

Comments
 (0)