Skip to content

ci: add android arm64 build and release#21647

Merged
CISC merged 9 commits intoggml-org:masterfrom
ykhrustalev:ykhrustalev/android-build2
Apr 17, 2026
Merged

ci: add android arm64 build and release#21647
CISC merged 9 commits intoggml-org:masterfrom
ykhrustalev:ykhrustalev/android-build2

Conversation

@ykhrustalev
Copy link
Copy Markdown
Contributor

@ykhrustalev ykhrustalev commented Apr 8, 2026


Overview

Add Android arm64 build to CI (build.yml) and release pipeline (release.yml) so that the same set of tools and server binaries shipped for Linux are also available for Android.

The job cross-compiles using the Android NDK on ubuntu-latest, following the same cmake flags and patterns as the existing ubuntu-cpu release job. The only android-specific additions are:

  • Toolchain file, ABI (arm64-v8a), and platform (android-28)
  • -DGGML_OPENMP=OFF — not available in NDK cross-compile
  • -DLLAMA_OPENSSL=OFF — no system SSL, matches existing build-android.yml

Requirements

@ykhrustalev ykhrustalev requested a review from a team as a code owner April 8, 2026 20:18
@Aflah012
Copy link
Copy Markdown

I think this is great (if actually implemented), I want to try it in Termux.

@github-actions github-actions bot added the devops improvements to build systems and github actions label Apr 15, 2026
@ykhrustalev
Copy link
Copy Markdown
Contributor Author

cc @ggml-org/ci @ngxson

@ykhrustalev
Copy link
Copy Markdown
Contributor Author

ykhrustalev commented Apr 15, 2026

The Android -Wmissing-prototypes failure on ma_android_sdk_version in vendor/miniaudio/miniaudio.h comes from upstream miniaudio. Filed a fix there: mackron/miniaudio#1116.

Copy link
Copy Markdown
Contributor

@ngxson ngxson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we skip building examples? If I understand correctly, the NDK only requires .so dynamic library, right?

@ykhrustalev
Copy link
Copy Markdown
Contributor Author

@ngxson my intention is to have

  • llama-cli
  • llama-completions
  • llama-benchmarks
  • llama-server
  • .so for the per-arm instruction level

@ykhrustalev ykhrustalev requested a review from ngxson April 15, 2026 20:09
Copy link
Copy Markdown
Contributor

@ngxson ngxson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't work specifically on android part of the project, but I think it may worth trying this. CC @ggml-org/ci for an additional review. Thanks!

./bin/llama-completion -m stories260K-be.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256

android-arm64:
runs-on: ubuntu-latest
Copy link
Copy Markdown
Member

@CISC CISC Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this not built on ARM?

Edit: Asking for a friend who has too many jobs queued on ubuntu-latest. :)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't know they exist until now, I will update

Copy link
Copy Markdown
Contributor Author

@ykhrustalev ykhrustalev Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried elsewhere and the android actions are not suitable for the arm node yet, so it would be tradeoff: using the existing actions on x86 or fixing them for the arm

Warning: Unable to compute a complete list of dependencies.
/home/runner/work/_actions/android-actions/setup-android/v4/dist/index.js:22290
        error2 = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);
                 ^

Error: The process '/home/runner/.android/sdk/cmdline-tools/20.0/bin/sdkmanager' failed with exit code 1
    at _ExecState._setResult (/home/runner/work/_actions/android-actions/setup-android/v4/dist/index.js:22290:18)
    at _ExecState.CheckComplete (/home/runner/work/_actions/android-actions/setup-android/v4/dist/index.js:22276:12)
    at ChildProcess.<anonymous> (/home/runner/work/_actions/android-actions/setup-android/v4/dist/index.js:22181:17)
    at ChildProcess.emit (node:events:508:28)
    at maybeClose (node:internal/child_process:1100:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5)

@ykhrustalev ykhrustalev requested review from CISC and ngxson April 16, 2026 18:53
Comment thread .github/workflows/build.yml Outdated
Comment thread .github/workflows/release.yml Outdated
ykhrustalev and others added 2 commits April 16, 2026 16:05
@ykhrustalev ykhrustalev requested a review from CISC April 16, 2026 20:06
@ykhrustalev ykhrustalev requested a review from CISC April 17, 2026 00:08
@CISC CISC merged commit a279d0f into ggml-org:master Apr 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

devops improvements to build systems and github actions examples

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants