summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Zugaldia <antonio@mapbox.com>2017-10-09 10:07:09 -0400
committerGitHub <noreply@github.com>2017-10-09 10:07:09 -0400
commita1aed6f095c6326fa9c8a8ecff591c5a03144070 (patch)
treeca0bb1e638e339bb9ca06f743f30e5b10ada6a7b
parent503a96c6b1d831236f6c937069bc9db81ec8ad5b (diff)
downloadqtlocation-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
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java28
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);
+ }
}