From 99abc8f205c669b4aee935503e51f511e879c8d0 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Sun, 4 Oct 2026 02:42:53 +0200 Subject: [PATCH] build(android): move to NDK r30 and mpv-android 687c7fd Upstream mpv-android moved its build to NDK r30 (30.0.16248370), and each mpv-android revision pins its own NDK, so the two move together. The new revision also updates harfbuzz to 14.5.0, unibreak to 8.0, fribidi to 1.0.17, libxml2 to 2.15.4, fontconfig to 2.18.3 and curl to 8.22.0, and builds libass with assembly on x86_64 (nasm, already installed in CI). r30 brings an LLVM update with codegen and LTO fixes and sysroots up to API 37. It is also the NDK current SDK managers install, so a fresh setup no longer needs r29 installed beside it. The script change invalidates the cached libmpv tree, so CI rebuilds it once. The staged libraries are the same set as before, all 16 KiB aligned. --- .github/workflows/android.yml | 4 ++-- android/THIRD_PARTY_NOTICES.md | 2 +- android/app/build.gradle.kts | 2 +- .../src/main/assets/licenses/THIRD_PARTY_NOTICES.md | 2 +- docs/ANDROID.md | 2 +- scripts/build-libmpv-android.sh | 12 ++++++------ 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index e29202f..47b2192 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -39,8 +39,8 @@ env: CARGO_TERM_COLOR: always ANDROID_API: '36' ANDROID_BUILD_TOOLS: '37.0.0' - ANDROID_NDK: '29.0.14206865' - ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/29.0.14206865 + ANDROID_NDK: '30.0.16248370' + ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/30.0.16248370 jobs: build: diff --git a/android/THIRD_PARTY_NOTICES.md b/android/THIRD_PARTY_NOTICES.md index cae3496..4ab5794 100644 --- a/android/THIRD_PARTY_NOTICES.md +++ b/android/THIRD_PARTY_NOTICES.md @@ -7,7 +7,7 @@ distributions. | Component | License | |---|---| | mpv/libmpv | GPL-2.0-or-later by default; verify the pinned build configuration | -| LLVM libc++ shared runtime (Android NDK r29) | Apache-2.0 WITH LLVM-exception | +| LLVM libc++ shared runtime (Android NDK r30) | Apache-2.0 WITH LLVM-exception | | AndroidX and Jetpack Compose | Apache-2.0 | | Kotlin | Apache-2.0 | | JNA | Apache-2.0 or LGPL-2.1-or-later | diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index dfe2e49..8bfa280 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -47,7 +47,7 @@ android { namespace = "io.narl.protonstream" compileSdk = 36 buildToolsVersion = "37.0.0" - ndkVersion = "29.0.14206865" + ndkVersion = "30.0.16248370" defaultConfig { applicationId = "io.narl.protonstream" diff --git a/android/app/src/main/assets/licenses/THIRD_PARTY_NOTICES.md b/android/app/src/main/assets/licenses/THIRD_PARTY_NOTICES.md index 14ba90c..2faf559 100644 --- a/android/app/src/main/assets/licenses/THIRD_PARTY_NOTICES.md +++ b/android/app/src/main/assets/licenses/THIRD_PARTY_NOTICES.md @@ -6,7 +6,7 @@ complete GNU GPL version 3 text is packaged beside this file as `GPL-3.0.txt`. | Component | License | |---|---| | mpv/libmpv | GPL-2.0-or-later by default; verify the pinned build configuration | -| LLVM libc++ shared runtime (Android NDK r29) | Apache-2.0 WITH LLVM-exception | +| LLVM libc++ shared runtime (Android NDK r30) | Apache-2.0 WITH LLVM-exception | | AndroidX and Jetpack Compose | Apache-2.0 | | Kotlin | Apache-2.0 | | JNA | Apache-2.0 or LGPL-2.1-or-later | diff --git a/docs/ANDROID.md b/docs/ANDROID.md index 16dd169..d1b9e84 100644 --- a/docs/ANDROID.md +++ b/docs/ANDROID.md @@ -10,7 +10,7 @@ reimplementing it in Kotlin. ## Toolchain Install JDK 17, Android SDK Platform/Build Tools 36, NDK -`29.0.14206865`, Rust 1.96, Gradle 8.13, and the native helpers: +`30.0.16248370`, Rust 1.96, Gradle 8.13, and the native helpers: ```bash rustup target add aarch64-linux-android x86_64-linux-android diff --git a/scripts/build-libmpv-android.sh b/scripts/build-libmpv-android.sh index f864eae..aaad95a 100644 --- a/scripts/build-libmpv-android.sh +++ b/scripts/build-libmpv-android.sh @@ -4,7 +4,7 @@ set -euo pipefail script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" repo_root="$(cd -- "$script_dir/.." && pwd)" source_dir="${PSTR_MPV_SOURCE_DIR:-$repo_root/.build/mpv-android}" -revision=20a3fa526fac6d3fe267aee0d4c349893fee65a3 +revision=687c7fd586d826fd0387809e14bec7a2b4fc45a1 destination="$repo_root/android/app/build/generated/mpv" # The staged tree depends only on the pinned revision and on this script, which @@ -32,19 +32,19 @@ git -C "$source_dir" submodule update --init --recursive if [[ -n "${ANDROID_NDK_HOME:-}" ]]; then ndk_dir="$ANDROID_NDK_HOME" elif [[ -n "${ANDROID_HOME:-}" ]]; then - ndk_dir="$ANDROID_HOME/ndk/29.0.14206865" + ndk_dir="$ANDROID_HOME/ndk/30.0.16248370" else - echo "error: set ANDROID_NDK_HOME or ANDROID_HOME to an Android NDK r29 installation" >&2 + echo "error: set ANDROID_NDK_HOME or ANDROID_HOME to an Android NDK r30 installation" >&2 exit 1 fi if [[ ! -f "$ndk_dir/source.properties" ]] || - ! grep -q '^Pkg.Revision = 29\.0\.14206865$' "$ndk_dir/source.properties"; then - echo "error: libmpv requires Android NDK 29.0.14206865: $ndk_dir" >&2 + ! grep -q '^Pkg.Revision = 30\.0\.16248370$' "$ndk_dir/source.properties"; then + echo "error: libmpv requires Android NDK 30.0.16248370: $ndk_dir" >&2 exit 1 fi ndk_dir="$(cd -- "$ndk_dir" && pwd -P)" mpv_sdk_dir="$source_dir/buildscripts/sdk" -mpv_ndk_link="$mpv_sdk_dir/android-ndk-r29" +mpv_ndk_link="$mpv_sdk_dir/android-ndk-r30" mkdir -p "$mpv_sdk_dir" if [[ -e "$mpv_ndk_link" && ! -L "$mpv_ndk_link" ]]; then echo "error: refusing to replace non-symlink NDK path: $mpv_ndk_link" >&2