summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java
blob: ea3d053d4b24c6162eafcfc8a9394316245b9eb2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.mapbox.mapboxsdk;

import com.mapbox.mapboxsdk.log.Logger;

/**
 * Loads the mapbox-gl shared library
 * <p>
 * By default uses the {@link System#loadLibrary(String)},
 * use {@link #setLibraryLoader(LibraryLoader)} to provide an alternative library loading hook.
 * </p>
 */
public abstract class LibraryLoader {

  private static final String TAG = "Mbgl-LibraryLoader";

  private static final LibraryLoader DEFAULT = new LibraryLoader() {
    @Override
    public void load(String name) {
      System.loadLibrary(name);
    }
  };

  private static volatile LibraryLoader loader = DEFAULT;

  /**
   * Set the library loader that loads the shared library.
   *
   * @param libraryLoader the library loader
   */
  public static void setLibraryLoader(LibraryLoader libraryLoader) {
    loader = libraryLoader;
  }

  /**
   * Loads "libmapbox-gl.so" native shared library.
   * <p>
   * Catches UnsatisfiedLinkErrors and prints a warning to logcat.
   * </p>
   */
  public static void load() {
    try {
      loader.load("mapbox-gl");
    } catch (UnsatisfiedLinkError error) {
      Logger.e(TAG, "Failed to load native shared library.", error);
    }
  }

  public abstract void load(String name);
}