From 548384a214697049efb332f9140acc9be15f1619 Mon Sep 17 00:00:00 2001 From: Xavier Roche Date: Tue, 21 Jul 2026 07:13:47 +0200 Subject: [PATCH 1/2] build: bump NDK to r27 LTS (27.3.13750724) Move off r26d to the current long-term-support NDK (supported until r29), across build.gradle, the toolchain Dockerfile, and the setup-ndk workflow versions. r27's lld defaults LOAD segments to 16 KB alignment, so the explicit -Wl,-z,max-page-size=16384 becomes belt-and-suspenders (kept; the alignment gate still enforces it). coffeecatch's arm64/x86_64 paths use bionic's own ucontext with no compile-time gates, so r27 needs no submodule change. NOTE: the CI assemble job runs inside the prebuilt GHCR toolchain image, so this cannot go green until that image is rebuilt from the bumped Dockerfile and republished (docker-image.yml). Sequence the image rebuild before relying on the assemble check. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01YWHWPSEx8LSfZHHAWmBtn8 Signed-off-by: Xavier Roche --- .github/workflows/android.yml | 2 +- .github/workflows/codeql.yml | 2 +- app/build.gradle | 2 +- app/src/main/jni/Application.mk | 2 +- docker/Dockerfile | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 5dd9d215..468de918 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -20,7 +20,7 @@ concurrency: cancel-in-progress: true env: - NDK_VERSION: r26d + NDK_VERSION: r27 OPENSSL_VERSION: "3.0.15" jobs: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 34ad7456..af776650 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -22,7 +22,7 @@ concurrency: cancel-in-progress: true env: - NDK_VERSION: r26d + NDK_VERSION: r27 OPENSSL_VERSION: "3.0.15" jobs: diff --git a/app/build.gradle b/app/build.gradle index 2b5a3af3..61557533 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ android { compileSdk 35 // Pinned to what the toolchain image installs, so no build-tools are fetched at build time. buildToolsVersion "35.0.0" - ndkVersion "26.3.11579264" + ndkVersion "27.3.13750724" defaultConfig { applicationId "com.httrack.android" diff --git a/app/src/main/jni/Application.mk b/app/src/main/jni/Application.mk index 08db648a..c9d4b83d 100755 --- a/app/src/main/jni/Application.mk +++ b/app/src/main/jni/Application.mk @@ -8,5 +8,5 @@ APP_ABI := arm64-v8a x86_64 APP_PLATFORM := android-24 -# Play requires 16 KB-aligned LOAD segments at targetSdk 35+; r26d's lld still defaults to 4 KB. +# Play requires 16 KB-aligned LOAD segments at targetSdk 35+; kept explicit though r27's lld defaults to 16 KB. APP_LDFLAGS := -Wl,-z,max-page-size=16384 diff --git a/docker/Dockerfile b/docker/Dockerfile index 043194d3..5739c268 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -2,7 +2,7 @@ # # - JDK 17 (required by AGP 8.x) # - Android cmdline-tools + platform 35 + build-tools 35 -# - NDK r26d (Clang, unified toolchain — replaces the r14/GCC hack) +# - NDK r27 (Clang, unified toolchain — replaces the r14/GCC hack) # - OpenSSL 3.x static libs cross-compiled for arm64-v8a/x86_64 # # Build: docker build -t httrack-android-build docker/ @@ -16,7 +16,7 @@ FROM eclipse-temurin:17-jdk-jammy ARG ANDROID_CMDLINE_VERSION=11076708 ARG ANDROID_PLATFORM=android-35 ARG ANDROID_BUILD_TOOLS=35.0.0 -ARG NDK_VERSION=26.3.11579264 +ARG NDK_VERSION=27.3.13750724 ARG OPENSSL_VERSION=3.0.15 ARG OPENSSL_SHA256=23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533 From ff74dad3f6dc286077e265f865eb5362009513de Mon Sep 17 00:00:00 2001 From: Xavier Roche Date: Tue, 21 Jul 2026 07:27:44 +0200 Subject: [PATCH 2/2] build: use the r27d setup-ndk label to match the 27.3.13750724 revision 27.3.13750724 is r27d, not the base r27, but the workflows set the bare "r27" label, so setup-ndk would fetch base r27 (27.0.12077973) and AGP's exact-match ndkVersion would fail to find it. Set the label to r27d. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01YWHWPSEx8LSfZHHAWmBtn8 Signed-off-by: Xavier Roche --- .github/workflows/android.yml | 2 +- .github/workflows/codeql.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 468de918..8347ea0a 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -20,7 +20,7 @@ concurrency: cancel-in-progress: true env: - NDK_VERSION: r27 + NDK_VERSION: r27d OPENSSL_VERSION: "3.0.15" jobs: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index af776650..16587565 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -22,7 +22,7 @@ concurrency: cancel-in-progress: true env: - NDK_VERSION: r27 + NDK_VERSION: r27d OPENSSL_VERSION: "3.0.15" jobs: