diff options
author | Antonio Zugaldia <antonio@mapbox.com> | 2017-10-06 16:30:15 -0400 |
---|---|---|
committer | Antonio Zugaldia <antonio@mapbox.com> | 2017-10-06 16:30:15 -0400 |
commit | 5fe98da757b62f3c0034430a6632926b1262adb7 (patch) | |
tree | dddc4695d3d2955823498a0fa83323e06839f3c4 /platform/android/MapboxGLAndroidSDK/src/main | |
parent | 5e08ce062ee60e01c6b589fc8963b4f1babc2095 (diff) | |
download | qtlocation-mapboxgl-5fe98da757b62f3c0034430a6632926b1262adb7.tar.gz |
provide a fallback method to load the native libraryupstream/az-light-agua
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main')
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 |