From 2dfc48b1fc09f6206d018fda3ecf6330cfc0891f Mon Sep 17 00:00:00 2001 From: James Rich Date: Tue, 1 Sep 2026 16:36:57 -0500 Subject: [PATCH] fix(map): pin the maplibre native ffi snapshot so 32-bit F-Droid gets 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. --- androidApp/build.gradle.kts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index d6478da58d..602059ccb6 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -343,3 +343,19 @@ dependencies { // plugin merges the generated rules into src//generated/baselineProfiles at build time. baselineProfile(projects.baselineprofile) } + +// DO NOT MERGE AS-IS — pinned to an unreleased snapshot. +// +// #6901 moved F-Droid from OSMdroid to maplibre-compose, whose 0.15.0 native stack +// (maplibre-native-ffi 0.202608.3) publishes arm64-v8a and x86_64 only. Our abiFilters above +// still list armeabi-v7a, so the 32-bit split installs with no map engine and the map tab dies +// with UnsatisfiedLinkError on libjniMaplibreNativeC.so — meshtastic/Meshtastic-Android#7001. +// +// Upstream merged ARM32 on 2026-08-24 (maplibre-native-ffi#658, #659, #660) but has not cut a +// release carrying it. The 0.1.0-SNAPSHOT publication does carry it, which is what this pin is +// for. Replace with a maplibre-compose version whose ffi pin is >= the first release containing +// those PRs, then delete this block. +configurations.configureEach { + resolutionStrategy.eachDependency { if (requested.group == "org.maplibre.nativeffi") useVersion("0.1.0-SNAPSHOT") } + resolutionStrategy.cacheChangingModulesFor(0, "seconds") +}