diff --git a/CHANGELOG.md b/CHANGELOG.md index be9bb97ea..7ffaeaead 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to do so please see the [`Contributing Guide`](https://github.com/mapbox/mapbox-gl-native/blob/master/CONTRIBUTING.md) first to get started. +## Master +### Bugs + - Synchronise LibaryLoader#loadLibrary to avoid race conditions resulting in UnsatisfiedLinkError [#58](https://github.com/mapbox/mapbox-gl-native-android/pull/58) + ## 8.6.0-alpha.1 - November 14, 2019 [Changes](https://github.com/mapbox/mapbox-gl-native-android/compare/android-v8.5.0...android-v8.6.0-alpha.1) since [Mapbox Maps SDK for Android v8.5.0](https://github.com/mapbox/mapbox-gl-native-android/releases/tag/android-v8.5.0): ### Features diff --git a/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java b/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java index ee9f4b3b6..96e97a850 100644 --- a/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java +++ b/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java @@ -5,7 +5,7 @@ import com.mapbox.mapboxsdk.log.Logger; /** * Loads the mapbox-gl shared library *
- * By default uses the {@link System#loadLibrary(String)}, + * By default uses SoLoader from https://github.com/facebook/SoLoader * use {@link #setLibraryLoader(LibraryLoader)} to provide an alternative library loading hook. *
*/ @@ -36,7 +36,7 @@ public abstract class LibraryLoader { * Catches UnsatisfiedLinkErrors and prints a warning to logcat. * */ - public static void load() { + public static synchronized void load() { try { if (!loaded) { loaded = true; diff --git a/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/loader/LibraryLoaderProviderImpl.java b/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/loader/LibraryLoaderProviderImpl.java index 9e5e72d40..b5c03d6b9 100644 --- a/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/loader/LibraryLoaderProviderImpl.java +++ b/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/module/loader/LibraryLoaderProviderImpl.java @@ -12,7 +12,7 @@ import static com.facebook.soloader.SoLoader.loadLibrary; /** * Concrete implementation of a native library loader. *- * Uses ReLinker from https://github.com/KeepSafe/ReLinker. + * Uses SoLoader from https://github.com/facebook/SoLoader. *
*/ public class LibraryLoaderProviderImpl implements LibraryLoaderProvider { @@ -28,7 +28,7 @@ public class LibraryLoaderProviderImpl implements LibraryLoaderProvider { } /** - * Concrete implementation of a LibraryLoader using ReLinker. + * Concrete implementation of a LibraryLoader using SoLoader. */ private static class SoLibraryLoader extends LibraryLoader { @@ -43,6 +43,7 @@ public class LibraryLoaderProviderImpl implements LibraryLoaderProvider { } catch (MapboxConfigurationException exception) { Logger.e(TAG, "Couldn't load so file with relinker, application context missing, " + "call Mapbox.getInstance(Context context, String accessToken) first"); + throw new UnsatisfiedLinkError(exception.getMessage()); } } }