summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/LibraryLoader.java
blob: 35b1e7cf6aba76a90c253ce8d7b6c7fb1f0b906e (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
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() {
    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);
  }
}