getodk / collect

ODK Collect is an Android app for filling out forms. It's been used to collect billions of data points in challenging environments around the world. Contribute and make the world a better place! ✨📋✨
https://docs.getodk.org/collect-intro
Other
718 stars 1.38k forks source link

UnsatisfiedLinkError: No implementation found for void com.mapbox.maps.assets.AssetManagerProvider.initialize #5431

Closed grzesiek2010 closed 1 year ago

grzesiek2010 commented 1 year ago

Problem description

https://console.firebase.google.com/u/1/project/api-project-322300403941/crashlytics/app/android:org.odk.collect.android/issues/587fc4abc10b00e36df371da5450a30e?time=last-seven-days&versions=v2022.4.4%20(4565)&types=crash&sessionEventKey=63D63605012600014FDC85ACDCE26103_1772442484238941528

Fatal Exception: java.lang.UnsatisfiedLinkError: No implementation found for void com.mapbox.maps.assets.AssetManagerProvider.initialize(android.content.res.AssetManager) (tried Java_com_mapbox_maps_assets_AssetManagerProvider_initialize and Java_com_mapbox_maps_assets_AssetManagerProvider_initialize__Landroid_content_res_AssetManager_2)
       at com.mapbox.maps.assets.AssetManagerProvider.initialize(AssetManagerProvider.java)
       at com.mapbox.maps.MapController.<init>(MapController.kt:64)
       at com.mapbox.maps.MapView.<init>(MapView.kt:104)
       at com.mapbox.maps.MapView.<init>(MapView.kt:55)
       at com.mapbox.maps.MapView.<init>(MapView.kt:55)
       at org.odk.collect.mapbox.MapboxMapFragment.onCreateView(MapboxMapFragment.kt:143)
       at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104)
       at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524)
       at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
       at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:113)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1433)
       at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2977)
       at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:2888)
       at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3129)
       at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552)
       at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
       at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:113)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1433)
       at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2977)
       at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:2888)
       at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3129)
       at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552)
       at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
       at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899)
       at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1817)
       at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760)
       at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:623)
       at org.odk.collect.androidshared.ui.DialogFragmentUtils.showIfNotShowing(DialogFragmentUtils.kt:60)
       at org.odk.collect.androidshared.ui.DialogFragmentUtils.showIfNotShowing(DialogFragmentUtils.kt:40)
       at org.odk.collect.androidshared.ui.DialogFragmentUtils.showIfNotShowing(DialogFragmentUtils.kt:31)
       at org.odk.collect.android.widgets.items.SelectOneFromMapWidget$onCreateAnswerView$1$1.granted(SelectOneFromMapWidget.kt:48)
       at org.odk.collect.permissions.PermissionsProvider$requestEnabledLocationPermissions$1.granted(PermissionsProvider.kt:88)
       at org.odk.collect.permissions.PermissionsProvider$requestPermissions$safePermissionsListener$1.granted(PermissionsProvider.kt:217)
       at org.odk.collect.permissions.DexterRequestPermissionsAPI$createMultiplePermissionsRequest$1.onPermissionsChecked(RequestPermissionsAPI.kt:74)
       at com.karumi.dexter.DexterInstance$1.run(:43)
       at com.karumi.dexter.MainThread.execute(:6)
       at com.karumi.dexter.DexterInstance.checkMultiplePermissions(:71)
grzesiek2010 commented 1 year ago

I was able to reproduce the issue so here are the steps:

  1. Installe the ODK Collect on a device that does not support mapbox (an emulator probably)
  2. Scan a QR code that has Mapbox as a base map like this one: 327580486_1862844147400918_5943634751367852281_n
  3. Download a form with map widgets.
  4. Open the form and try to open any map.