2

Yandex MapKit crashes on MapKitFactory.initialize(this) line

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    MapKitFactory.setApiKey(YANDEX_MAP_KEY)
    MapKitFactory.initialize(this)
    setContentView(R.layout.advert_activity)
}

Stacktrace is

java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.appname.app/app_lib/libgnustl_shared.so" is 32-bit instead of 64-bit at java.lang.Runtime.load0(Runtime.java:928) at java.lang.System.load(System.java:1621) at com.yandex.runtime.internal.ReLinker.loadLibrary(ReLinker.java:82) at com.yandex.runtime.Runtime.loadLibrary(Runtime.java:122) at com.yandex.runtime.Runtime.init(Runtime.java:99) at com.yandex.mapkit.MapKitFactory.initialize(MapKitFactory.java:18) at com.appname.main.MainActivity.onCreate(MainActivity.kt:41) at android.app.Activity.performCreate(Activity.java:7023) at android.app.Activity.performCreate(Activity.java:7014) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2870) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1601) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:172) at android.app.ActivityThread.main(ActivityThread.java:6590) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Andrey Danilov
  • 6,194
  • 5
  • 32
  • 56

2 Answers2

1

Look at this issue https://github.com/yandex/mapkit-android-demo/issues/4/. MapKit 3.0 doesn't have armv8.

Ilia
  • 63
  • 1
  • 6
0

I have tried everything, but only that solution worked:

Add this line to project's build.gradle

android {
    defaultConfig {
        ndk {
            abiFilters "armeabi-v7a", "x86", 'armeabi', 'arm64-v8a'
        }

        packagingOptions {
            exclude '/lib/mips64/**'
            exclude '/lib/arm64-v8a/**'
            exclude '/lib/x86_64/**'
        }
    }
}
Andrey Danilov
  • 6,194
  • 5
  • 32
  • 56
  • down-voted, because it should be `armeabi` (the `.so` location & `abiFilters`) only, in order to load 32 bit libraries on both architectures. filtering and then excluding is a little pointless. just alike answering the own question immediately after having posted it, appears to be fabricated content. – Martin Zeitler Sep 13 '18 at 09:36