diff options
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); + } } |