LLooggaann
LLooggaann

Reputation: 455

Can't add Mapbox SDK as a module

I'm attempting to add the Android Mapbox library as a module rather than use Gradle. This is so we can simply modify a few lines of code to fit our use case that Mapbox didn't account for. I clone to repo, import the module using Android Studio, and add it as a dependency to my projects build. (compile project(':MapboxGLAndroidSDK')) In settings.gradle we add it as well include ':app', ':MapboxGLAndroidSDK'.

When trying to build, however, we get the following exception:

FATAL EXCEPTION: main
                                                                       Process: com.gc.avt.display, PID: 15839
                                                                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gc.avt.display/com.gc.avt.display.MainActivity}: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class com.mapbox.mapboxsdk.maps.MapView
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3256)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352)
                                                                           at android.app.ActivityThread.access$1100(ActivityThread.java:223)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:158)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:7231)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                        Caused by: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class com.mapbox.mapboxsdk.maps.MapView
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:551)
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
                                                                           at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                           at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                           at com.gc.avt.display.MainActivity.onCreate(MainActivity.java:100)
                                                                           at android.app.Activity.performCreate(Activity.java:6877)
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3209)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352) 
                                                                           at android.app.ActivityThread.access$1100(ActivityThread.java:223) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:158) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:7231) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                                                                        Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class com.mapbox.mapboxsdk.maps.MapView
                                                                           at android.view.LayoutInflater.createView(LayoutInflater.java:657)
                                                                           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776)
                                                                           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
                                                                           at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
                                                                           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
                                                                           at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                           at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                           at com.gc.avt.display.MainActivity.onCreate(MainActivity.java:100) 
                                                                           at android.app.Activity.performCreate(Activity.java:6877) 
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3209) 
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352) 
                                                                           at android.app.ActivityThread.access$1100(ActivityThread.java:223) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:158) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:7231) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                                                                        Caused by: java.lang.reflect.InvocationTargetException
                                                                           at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                           at android.view.LayoutInflater.createView(LayoutInflater.java:631)
                                                                           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776) 
                                                                           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
                                                                           at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
                                                                           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
                                                                           at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                           at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                           at com.gc.avt.display.MainActivity.onCreate(MainActivity.java:100) 
                                                                           at android.app.Activity.performCreate(Activity.java:6877) 
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3209) 
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352) 
                                                                           at android.app.ActivityThread.access$1100(ActivityThread.java:223) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:158) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:7231) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                                                                        Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.gc.avt.display-1/base.apk"],nativeLibraryDirectories=[/data/app/com.gc.avt.display-1/lib/arm64, /data/app/com.gc.avt.display-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]] couldn't find "libmapbox-gl.so"
                                                                           at java.lang.Runtime.loadLibrary(Runtime.java:367)
                                                                           at java.lang.System.loadLibrary(System.java:1076)
                                                                           at com.mapbox.mapboxsdk.maps.NativeMapView.<clinit>(NativeMapView.java:50)
                                                                           at com.mapbox.mapboxsdk.maps.MapView.initialize(MapView.java:204)
                                                                           at com.mapbox.mapboxsdk.maps.MapView.<init>(MapView.java:171)
                                                                           at java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                           at android.view.LayoutInflater.createView(LayoutInflater.java:631) 
                                                                           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776) 
                                                                           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
                                                                           at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
                                                                           at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
                                                                           at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
                                                                           at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                           at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                           at com.gc.avt.display.MainActivity.onCreate(MainActivity.java:100) 
                                                                           at android.app.Activity.performCreate(Activity.java:6877) 
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3209) 
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352) 
                                                                           at android.app.ActivityThread.access$1100(ActivityThread.java:223) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:158) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:7231) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

It looks like Mapbox is throwing when trying to run

static {
    System.loadLibrary("mapbox-gl");
}

Any ideas on how to get this module running correctly?

Upvotes: 0

Views: 182

Answers (1)

cammace
cammace

Reputation: 3168

It can be difficult to get Mapbox GL working in your Android application when building from source. Depending on the feature i'd recommend request features on our Github page or even contributing by opening a pull request with your feature. If you still want to add the source code into your application as a module, there's quite a few more steps you are missing. You'll need to make sure you are also including the C++ "core" files in your project, compiling these using make android, etc. You'll also need to make sure you have all the required dependencies to build the project. We have a good guide in our repo which will walk you through setup.

Upvotes: 1

Related Questions