summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Zugaldia <antonio@mapbox.com>2017-10-06 16:30:15 -0400
committerAntonio Zugaldia <antonio@mapbox.com>2017-10-06 16:30:15 -0400
commit5fe98da757b62f3c0034430a6632926b1262adb7 (patch)
treedddc4695d3d2955823498a0fa83323e06839f3c4
parent5e08ce062ee60e01c6b589fc8963b4f1babc2095 (diff)
downloadqtlocation-mapboxgl-upstream/az-light-agua.tar.gz
provide a fallback method to load the native libraryupstream/az-light-agua
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java27
-rwxr-xr-xplatform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java3
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/NativeConnectivityListener.java3
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java3
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java3
5 files changed, 33 insertions, 6 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..65f8eec03b 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,38 @@
package com.mapbox.mapboxsdk;
+import android.content.Context;
+
+import java.io.File;
+
/**
* 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.
+ * @param context The application context
*/
- public static void load() {
- System.loadLibrary("mapbox-gl");
+ public static void load(Context context) {
+ try {
+ System.loadLibrary("mapbox-gl");
+ } catch (UnsatisfiedLinkError error) {
+ if (context != null) {
+ 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);
+ }
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
index 3ce6aab581..176e8cb2b4 100755
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
@@ -11,6 +11,7 @@ import android.text.TextUtils;
import android.util.DisplayMetrics;
import com.mapbox.mapboxsdk.LibraryLoader;
+import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.Polygon;
@@ -62,7 +63,7 @@ final class NativeMapView {
private MapboxMap.SnapshotReadyCallback snapshotReadyCallback;
static {
- LibraryLoader.load();
+ LibraryLoader.load(Mapbox.getApplicationContext());
}
//
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/NativeConnectivityListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/NativeConnectivityListener.java
index ae74859228..79816fe27b 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/NativeConnectivityListener.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/net/NativeConnectivityListener.java
@@ -1,6 +1,7 @@
package com.mapbox.mapboxsdk.net;
import com.mapbox.mapboxsdk.LibraryLoader;
+import com.mapbox.mapboxsdk.Mapbox;
/**
* Updates the native library's connectivity state
@@ -8,7 +9,7 @@ import com.mapbox.mapboxsdk.LibraryLoader;
class NativeConnectivityListener implements ConnectivityListener {
static {
- LibraryLoader.load();
+ LibraryLoader.load(Mapbox.getApplicationContext());
}
private long nativePtr;
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
index 130284e88d..1c18adfe45 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
@@ -7,6 +7,7 @@ import android.os.Looper;
import android.support.annotation.NonNull;
import com.mapbox.mapboxsdk.LibraryLoader;
+import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.R;
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
import com.mapbox.mapboxsdk.net.ConnectivityReceiver;
@@ -27,7 +28,7 @@ public class OfflineManager {
//
static {
- LibraryLoader.load();
+ LibraryLoader.load(Mapbox.getApplicationContext());
}
// Native peer pointer
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java
index f210729037..6a7857469e 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java
@@ -7,6 +7,7 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.mapbox.mapboxsdk.LibraryLoader;
+import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.storage.FileSource;
import java.lang.annotation.Retention;
@@ -24,7 +25,7 @@ public class OfflineRegion {
//
static {
- LibraryLoader.load();
+ LibraryLoader.load(Mapbox.getApplicationContext());
}
// Members