You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Current Android minimum API level: **28** (Android 9.0 Pie)
44
+
45
+
To change the minimum API level, update the following **three** places:
46
+
47
+
1.**`CMakeLists.txt`** — the `add_compile_definitions(__ANDROID_API__=28)` line (controls which NDK header symbols are exposed).
48
+
2.**`.github/workflows/publish.yml`** — `-DANDROID_PLATFORM=android-28` in both the `crosscompile-android-aarch64` and `crosscompile-android-aarch64-opencl` job steps.
49
+
3.**`CLAUDE.md`** (this file) — the "Current Android minimum API level" line above and the `-DANDROID_PLATFORM` values in the local sanity-build examples.
50
+
51
+
Also update the minimum-API note in **`README.md`** (the `[!NOTE]` block near the Android classifier entries and the "Importing in Android" section).
52
+
53
+
**Why API 28?**`mtmd-helper.cpp` (part of the upstream llama.cpp `mtmd` multimodal library) includes `vendor/sheredom/subprocess.h`, which calls `posix_spawn`, `posix_spawnp`, and `posix_spawn_file_actions_*`. The Android NDK headers only expose those declarations when `__ANDROID_API__ >= 28`. The symbols exist in `libc.so` at all API levels; the define only gates their header visibility.
54
+
41
55
## OpenCL / Adreno backend on Android
42
56
43
57
A second Android arm64 artifact is built with the OpenCL backend enabled and
@@ -62,7 +76,7 @@ Three places wire it together (mirrors the CUDA classifier pattern):
0 commit comments