fix(map): pin the maplibre native ffi snapshot so 32-bit F-Droid gets a map engine - #7003
Closed
jamesarich wants to merge 1 commit into
Closed
jamesarich wants to merge 1 commit into
jamesarich wants to merge 1 commit into
Conversation
… a map engine #6901 moved the F-Droid flavor from OSMdroid to maplibre-compose. Its 0.15.0 native stack, maplibre-native-ffi 0.202608.3, publishes arm64-v8a and x86_64 only, but our abiFilters and ABI splits still list armeabi-v7a. The 32-bit split therefore installs with no map engine at all, and opening the map tab dies with UnsatisfiedLinkError on libjniMaplibreNativeC.so (#7001). Upstream merged Android ARM32 on 2026-08-24 across maplibre-native-ffi #658, #659 and #660, but the newest release predates those merges. The rolling 0.1.0-SNAPSHOT publication does carry armeabi-v7a, so pin the whole org.maplibre.nativeffi group to it until a release exists. Not for merge in this form. A snapshot pin is not shippable; this is here to prove the fix and to produce a 32-bit APK that affected users can test.
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Sep 1, 2026
Collaborator
Author
|
Closing - the pin cannot ship in any form, and the check that replaces it is #7013.
The v7a test build from this PR's CI run stays valid for the artifact's 7-day retention: https://github.com/meshtastic/Meshtastic-Android/actions/runs/33562083023/artifacts/9821973919 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
#6901moved the F-Droid flavor from OSMdroid to maplibre-compose. maplibre-compose 0.15.0's native stack —maplibre-native-ffi 0.202608.3— publishes arm64-v8a and x86_64 only, butandroidApp/build.gradle.ktsstill listsarmeabi-v7ain bothabiFiltersand the ABIsplits. The 32-bit split builds and installs happily with no map engine in it, and opening the map tab dies:Every armeabi-v7a install of 29322131 and later has no map, by construction. Shipped artifacts from
v2.8.2-closed.1:.soandroidApp-fdroid-arm64-v8a-release.apkandroidApp-fdroid-armeabi-v7a-release.apkRelates to #7001.
🐛 Bug Fixes
org.maplibre.nativeffigroup to0.1.0-SNAPSHOT, the rolling publication that carries armeabi-v7a, so the 32-bit split ships a map engine again.cacheChangingModulesFor(0, "seconds")so a snapshot pin is not served stale from the dependency cache.Not for merge in this form
A snapshot pin is not shippable. Upstream merged Android ARM32 on 2026-08-24 — maplibre-native-ffi #658 (ARMv7 OpenGL), #659 (Kotlin/Native
androidNativeArm32), #660 (ARMv7 Vulkan) — but the newest release,0.202608.3(2026-08-20), predates them, and maplibre-composemainstill pins that version.The shipping fix is a two-step upstream wait:
LocationManagerproviders #660.maplibre-nativeFfipin to it and publishes.Then this becomes a one-line
maplibre-composebump ingradle/libs.versions.tomland this block gets deleted.This PR exists to prove the fix works and to produce a 32-bit APK affected users can test.
Testing Performed
Verified against the artifacts, not just the build:
:androidApp:assembleFdroidDebug— the armeabi-v7a split grows 60 MB → 70 MB and now containslib/armeabi-v7a/libmaplibre-native-c.so(8.8 MB) andlib/armeabi-v7a/libjniMaplibreNativeC.so(908 KB).ELF 32-bit LSB shared object, ARM, EABI5 version 1,Tag_CPU_arch: v7, NDK r28c, built for Android 24.maplibre-compose: Rendered the first map frame with OPENGL. This also clears the concern that feat: add preferredLocationManagerproviders #660's Vulkan handle ABI break would affect our OpenGL path. It does not..sofiles from the arm64 APK (leaving exactly the lib set the v7a split ships), re-signing and installing gives the identicalUnsatisfiedLinkErrorabove.spotlessApply spotlessCheck detektgreen.Not verified: the ARM32 code path actually executing. armeabi-v7a emulator system images stop at API 25 and
minSdkis 26, so no emulator can run it, and the only physical device here is arm64-only. That rests on upstream's CI until a 32-bit phone runs the artifact from this PR.🤖 Generated with Claude Code