From e4457608cc93ee1f4ad604cb8516fa5370fa2f37 Mon Sep 17 00:00:00 2001 From: Adrian Cojocaru Date: Mon, 17 Nov 2025 13:44:33 +0200 Subject: [PATCH] Disable `UnsatisfiedLinkError` during local tests (#3942) --- .../org/maplibre/android/LibraryLoader.java | 3 +- .../maplibre/android/utils/PlatformUtils.java | 35 +++++++++++++++++++ .../java/org/maplibre/android/BaseTest.kt | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/utils/PlatformUtils.java diff --git a/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/LibraryLoader.java b/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/LibraryLoader.java index ebda195ac..e9b7d0ff3 100644 --- a/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/LibraryLoader.java +++ b/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/LibraryLoader.java @@ -1,6 +1,7 @@ package org.maplibre.android; import org.maplibre.android.log.Logger; +import org.maplibre.android.utils.PlatformUtils; /** * Loads the mapbox-gl shared library @@ -56,7 +57,7 @@ public abstract class LibraryLoader { Logger.e(TAG, message, error); MapStrictMode.strictModeViolation(message, error); - if (!handleLoadError) { + if (!handleLoadError && !PlatformUtils.isTest()) { throw error; } } diff --git a/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/utils/PlatformUtils.java b/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/utils/PlatformUtils.java new file mode 100644 index 000000000..7338a196b --- /dev/null +++ b/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/utils/PlatformUtils.java @@ -0,0 +1,35 @@ +package org.maplibre.android.utils; + +public class PlatformUtils { + + public static boolean isTest() { + return isJUnit() || isRobolectric() || !isAndroid(); + } + + public static boolean isJUnit() { + try { + Class.forName("org.junit.Test"); + return true; + } catch (ClassNotFoundException ignored) { + return false; + } + } + + public static boolean isRobolectric() { + try { + Class.forName("org.robolectric.Robolectric"); + return true; + } catch (ClassNotFoundException ignored) { + return false; + } + } + + public static boolean isAndroid() { + try { + Class.forName("android.os.Build"); + return true; + } catch (ClassNotFoundException ignored) { + return false; + } + } +} diff --git a/platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/BaseTest.kt b/platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/BaseTest.kt index dd89a20d3..0848feb63 100644 --- a/platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/BaseTest.kt +++ b/platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/BaseTest.kt @@ -7,7 +7,7 @@ open class BaseTest { @JvmStatic @BeforeClass fun setup() { - LibraryLoader.enableErrorHandling(true) + } } }