From 748b7ae9f67ba5ba977c7a83165a3b371e9eb28c Mon Sep 17 00:00:00 2001 From: Tony Giorgio Date: Tue, 20 Jan 2026 11:37:17 -0600 Subject: [PATCH] fix(android): add 16KB page size support for Android 15+ Google Play now requires apps to support 16KB memory page sizes for Android 15+ devices. This adds the required linker flags to align native libraries to 16KB page boundaries. https://developer.android.com/guide/practices/page-sizes Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- .github/workflows/android-build.yml | 19 +++++++++++++++++++ .github/workflows/release.yml | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/.github/workflows/android-build.yml b/.github/workflows/android-build.yml index 182490337..1cf4bd79e 100644 --- a/.github/workflows/android-build.yml +++ b/.github/workflows/android-build.yml @@ -159,6 +159,25 @@ jobs: echo "SCCACHE_DIR=$HOME/.cache/sccache" >> $GITHUB_ENV echo "SCCACHE_CACHE_SIZE=2G" >> $GITHUB_ENV + - name: Create cargo config for 16KB page size support + run: | + # Android 15+ requires 16KB page size alignment for native libraries + # https://developer.android.com/guide/practices/page-sizes + mkdir -p frontend/src-tauri/.cargo + cat > frontend/src-tauri/.cargo/config.toml << 'EOF' + [target.aarch64-linux-android] + rustflags = ["-C", "link-arg=-Wl,-z,max-page-size=16384"] + + [target.armv7-linux-androideabi] + rustflags = ["-C", "link-arg=-Wl,-z,max-page-size=16384"] + + [target.i686-linux-android] + rustflags = ["-C", "link-arg=-Wl,-z,max-page-size=16384"] + + [target.x86_64-linux-android] + rustflags = ["-C", "link-arg=-Wl,-z,max-page-size=16384"] + EOF + - name: Build Rust library (${{ matrix.rust_target }}) run: | export NDK_HOME=${{ steps.setup-ndk.outputs.ndk-path }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3440500a5..2f604648c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -284,6 +284,25 @@ jobs: echo "SCCACHE_DIR=$HOME/.cache/sccache" >> $GITHUB_ENV echo "SCCACHE_CACHE_SIZE=2G" >> $GITHUB_ENV + - name: Create cargo config for 16KB page size support + run: | + # Android 15+ requires 16KB page size alignment for native libraries + # https://developer.android.com/guide/practices/page-sizes + mkdir -p frontend/src-tauri/.cargo + cat > frontend/src-tauri/.cargo/config.toml << 'EOF' + [target.aarch64-linux-android] + rustflags = ["-C", "link-arg=-Wl,-z,max-page-size=16384"] + + [target.armv7-linux-androideabi] + rustflags = ["-C", "link-arg=-Wl,-z,max-page-size=16384"] + + [target.i686-linux-android] + rustflags = ["-C", "link-arg=-Wl,-z,max-page-size=16384"] + + [target.x86_64-linux-android] + rustflags = ["-C", "link-arg=-Wl,-z,max-page-size=16384"] + EOF + - name: Build Rust library (${{ matrix.rust_target }}) run: | export NDK_HOME=${{ steps.setup-ndk.outputs.ndk-path }}