anboralabs / spatia-room

Implementation of spatia lite database to android component Room
MIT License
41 stars 4 forks source link

Support for Mapbox v11 #52

Open k3nda opened 1 week ago

k3nda commented 1 week ago

It is working only with mapbox v10. When I upgrade mapbox to v11 I got exception below when starting app and app crashes.

FATAL EXCEPTION: ConnectivityThread (Ask Gemini)
        Process: io.earthbanc.mrv, PID: 6611
        java.lang.ExceptionInInitializerError
         at io.earthbanc.mrv.base.network.NetworkStatus$init$networkCallback$1.onCapabilitiesChanged(NetworkStatus.kt:48)
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:4017)
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:3992)
         at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:4338)
         at android.os.Handler.dispatchMessage(Handler.java:106)
         at android.os.Looper.loopOnce(Looper.java:206)
         at android.os.Looper.loop(Looper.java:295)
         at android.os.HandlerThread.run(HandlerThread.java:67)
        Caused by: com.mapbox.common.MapboxInitializerException: Failed to initialize: Attempt=2, exception=[StartupException], initializer called 1024 ms ago, exception.message=[androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__emutls_get_address" referenced by "/data/app/~~R1qfrD3BL-CSXOmGufbJGA==/io.earthbanc.mrv-57Xd-UaEQmkp4PL7TMYj_g==/base.apk!/lib/arm64-v8a/libmapbox-common.so"...], exception.cause=[StartupException], exception.cause.message=[java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__emutls_get_address" referenced by "/data/app/~~R1qfrD3BL-CSXOmGufbJGA==/io.earthbanc.mrv-57Xd-UaEQmkp4PL7TMYj_g==/base.apk!/lib/arm64-v8a/libmapbox-common.so"...], extractedNativeLibs=[], isInstantApp=[false], isMainThread=[false]
         at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:384)
         at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:113)
         at com.mapbox.common.BaseMapboxInitializer.init(Unknown Source:2)
         at com.mapbox.common.OfflineSwitch.<clinit>(OfflineSwitch.java:82)
         at io.earthbanc.mrv.base.network.NetworkStatus$init$networkCallback$1.onCapabilitiesChanged(NetworkStatus.kt:48) 
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:4017) 
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:3992) 
         at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:4338) 
         at android.os.Handler.dispatchMessage(Handler.java:106) 
         at android.os.Looper.loopOnce(Looper.java:206) 
         at android.os.Looper.loop(Looper.java:295) 
         at android.os.HandlerThread.run(HandlerThread.java:67) 
        Caused by: androidx.startup.StartupException: androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__emutls_get_address" referenced by "/data/app/~~R1qfrD3BL-CSXOmGufbJGA==/io.earthbanc.mrv-57Xd-UaEQmkp4PL7TMYj_g==/base.apk!/lib/arm64-v8a/libmapbox-common.so"...
         at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)
         at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:138)
         at androidx.startup.AppInitializer.initializeComponent(AppInitializer.java:117)
         at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:240)
         at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:113) 
         at com.mapbox.common.BaseMapboxInitializer.init(Unknown Source:2) 
         at com.mapbox.common.OfflineSwitch.<clinit>(OfflineSwitch.java:82) 
         at io.earthbanc.mrv.base.network.NetworkStatus$init$networkCallback$1.onCapabilitiesChanged(NetworkStatus.kt:48) 
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:4017) 
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:3992) 
         at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:4338) 
         at android.os.Handler.dispatchMessage(Handler.java:106) 
         at android.os.Looper.loopOnce(Looper.java:206) 
         at android.os.Looper.loop(Looper.java:295) 
         at android.os.HandlerThread.run(HandlerThread.java:67) 
        Caused by: androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__emutls_get_address" referenced by "/data/app/~~R1qfrD3BL-CSXOmGufbJGA==/io.earthbanc.mrv-57Xd-UaEQmkp4PL7TMYj_g==/base.apk!/lib/arm64-v8a/libmapbox-common.so"...
         at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)
         at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:173)
         at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:138) 
         at androidx.startup.AppInitializer.initializeComponent(AppInitializer.java:117) 
         at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:240) 
         at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:113) 
         at com.mapbox.common.BaseMapboxInitializer.init(Unknown Source:2) 
         at com.mapbox.common.OfflineSwitch.<clinit>(OfflineSwitch.java:82) 
         at io.earthbanc.mrv.base.network.NetworkStatus$init$networkCallback$1.onCapabilitiesChanged(NetworkStatus.kt:48) 
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:4017) 
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:3992) 
         at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:4338) 
         at android.os.Handler.dispatchMessage(Handler.java:106) 
         at android.os.Looper.loopOnce(Looper.java:206) 
         at android.os.Looper.loop(Looper.java:295) 
         at android.os.HandlerThread.run(HandlerThread.java:67) 
        Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__emutls_get_address" referenced by "/data/app/~~R1qfrD3BL-CSXOmGufbJGA==/io.earthbanc.mrv-57Xd-UaEQmkp4PL7TMYj_g==/base.apk!/lib/arm64-v8a/libmapbox-common.so"...
         at java.lang.Runtime.loadLibrary0(Runtime.java:1082)
         at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
         at java.lang.System.loadLibrary(System.java:1661)
         at com.mapbox.common.loader.MapboxLibraryLoader.load(MapboxLibraryLoader.kt:19)
         at com.mapbox.common.CoreInitializer.create(CoreInitializer.kt:98)
         at com.mapbox.common.CoreInitializer.create(CoreInitializer.kt:12)
         at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:180)
         at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:173) 
         at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:138) 
         at androidx.startup.AppInitializer.initializeComponent(AppInitializer.java:117) 
         at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:240) 
         at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:113) 
         at com.mapbox.common.BaseMapboxInitializer.init(Unknown Source:2) 
         at com.mapbox.common.OfflineSwitch.<clinit>(OfflineSwitch.java:82) 
         at io.earthbanc.mrv.base.network.NetworkStatus$init$networkCallback$1.onCapabilitiesChanged(NetworkStatus.kt:48) 
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:4017) 
         at android.net.ConnectivityManager$NetworkCallback.onAvailable(ConnectivityManager.java:3992) 
         at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:4338) 
         at android.os.Handler.dispatchMessage(Handler.java:106) 
         at android.os.Looper.loopOnce(Looper.java:206) 
         at android.os.Looper.loop(Looper.java:295) 
         at android.os.HandlerThread.run(HandlerThread.java:67) 
dalgarins commented 1 week ago

@k3nda for mapbox it's mandatory to add this dependency: implementation 'com.github.dalgarins:android-spatialite:2.1.2-ndk23-alpha'

have you added that one?

also please share a proof of concept repo with same issue and the libraries your using setup, I'll review the repo and try to fix the issue.

k3nda commented 4 days ago

Hi @dalgarins, yes I added com.github.dalgarins:android-spatialite:2.1.2-ndk23-alpha. Here is example repo - https://github.com/k3nda/mapboxv11withspatialitedb. In gradle/libs.versions.toml there are 2 versions of mapbox. v10 (10.18.3) is working and v11 (11.6.1) is not working. It is enough to just try run the app and it will crash with above error. Thank you to check this and hope you fix it :pray:

dalgarins commented 13 hours ago

@k3nda I found the issue, and this is the library version you need to use.

implementation 'com.github.dalgarins:android-spatialite:2.1.2-ndk-r23c'

please test it, and let me know if that fix your issue.