diff options
author | Antonio Zugaldia <antonio@mapbox.com> | 2017-10-09 10:07:09 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-09 10:07:09 -0400 |
commit | a1aed6f095c6326fa9c8a8ecff591c5a03144070 (patch) | |
tree | ca0bb1e638e339bb9ca06f743f30e5b10ada6a7b /platform | |
parent | 503a96c6b1d831236f6c937069bc9db81ec8ad5b (diff) | |
download | qtlocation-mapboxgl-a1aed6f095c6326fa9c8a8ecff591c5a03144070.tar.gz |
Provide a fallback method to load the native library (#10154)
* provide a fallback method to load the native library
* move context call inside loader to avoid changing method signature
Diffstat (limited to 'platform')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java index 8a75176ccd..35b1e7cf6a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java @@ -1,15 +1,41 @@ package com.mapbox.mapboxsdk; +import android.content.Context; + +import java.io.File; + +import timber.log.Timber; + /** * Centralises the knowledge about "mapbox-gl" library loading. */ public class LibraryLoader { + private static final String LIBRARY_NAME = "libmapbox-gl.so"; + /** * Loads "libmapbox-gl.so" native shared library. */ public static void load() { - System.loadLibrary("mapbox-gl"); + try { + System.loadLibrary("mapbox-gl"); + } catch (UnsatisfiedLinkError error) { + Context context = Mapbox.getApplicationContext(); + if (context != null) { + Timber.d("Loading %s from internal storage.", LIBRARY_NAME); + System.load(getLibraryLocation(context).getAbsolutePath()); + } + } } + /** + * Returns a file in the app internal storage that may contain a locally cached copy + * of the Mapbox native library. + * + * @param context The application context + * @return a file object + */ + public static File getLibraryLocation(Context context) { + return new File(context.getFilesDir(), LIBRARY_NAME); + } } |