maps
maps copied to clipboard
[Bug]: snapshotManager.takeSnap causes crash on Android
Mapbox Implementation
Mapbox
Mapbox Version
11.0.0
React Native Version
0.74.5
Platform
Android
@rnmapbox/maps version
10.1.37
Standalone component to reproduce
import React from 'react';
import { snapshotManager } from '@rnmapbox/maps';
import { useEffect, useState } from "react-native";
const MapboxBugTestComponent = () => {
const [snapshotURI, setSnapshotURI] = useState();
useEffect(() => {
(async () => {
const uri = await snapshotManager.takeSnap({
centerCoordinate: [-74.12641, 40.797968],
});
setSnapshotURI(uri);
})();
}, []);
return null
}
Observed behavior and steps to reproduce
Calling snapshotManager.takeSnap crashes the device. It doesn't seem to matter what options are passed. The simple example above uses the hardcoded center coordinates from the JSDoc example for that function.
Javascript trace:
ERROR Your app just crashed. See the error below.
java.lang.UnsupportedOperationException
java.nio.ByteBuffer.array(ByteBuffer.java:774)
com.rnmapbox.rnmbx.v11compat.image.ImageKt.toByteArray(Image.kt:29)
com.rnmapbox.rnmbx.utils.BitmapUtils.createImgBase64(BitmapUtils.kt:109)
com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule$takeSnap$1$1.invoke(RNMBXSnapshotModule.kt:62)
com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule$takeSnap$1$1.invoke(RNMBXSnapshotModule.kt:50)
com.rnmapbox.rnmbx.v11compat.snapshot.SnapshotKt$sam$com_mapbox_maps_SnapshotResultCallback$0.onSnapshotResult(Unknown Source:2)
com.mapbox.maps.Snapshotter.start$lambda$13(Snapshotter.kt:181)
com.mapbox.maps.Snapshotter.$r8$lambda$U-QghdWV6YQyBenjwZeiG2To9GQ(Unknown Source:0)
com.mapbox.maps.Snapshotter$$ExternalSyntheticLambda4.run(Unknown Source:6)
android.os.MessageQueue.nativePollOnce(Native Method)
android.os.MessageQueue.next(MessageQueue.java:336)
android.os.Looper.loop(Looper.java:181)
android.app.ActivityThread.main(ActivityThread.java:7560)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Native trace
04-07 12:07:49.846 17403 17403 W System.err: java.lang.UnsupportedOperationException
04-07 12:07:49.846 17403 17403 W System.err: at java.nio.ByteBuffer.array(ByteBuffer.java:774)
04-07 12:07:49.846 17403 17403 W System.err: at com.rnmapbox.rnmbx.v11compat.image.ImageKt.toByteArray(Image.kt:29)
04-07 12:07:49.846 17403 17403 W System.err: at com.rnmapbox.rnmbx.utils.BitmapUtils.createImgBase64(BitmapUtils.kt:109)
04-07 12:07:49.846 17403 17403 W System.err: at com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule$takeSnap$1$1.invoke(RNMBXSnapshotModule.kt:62)
04-07 12:07:49.846 17403 17403 W System.err: at com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule$takeSnap$1$1.invoke(RNMBXSnapshotModule.kt:50)
04-07 12:07:49.846 17403 17403 W System.err: at com.rnmapbox.rnmbx.v11compat.snapshot.SnapshotKt$sam$com_mapbox_maps_SnapshotResultCallback$0.onSnapshotResult(Unknown Source:2)
04-07 12:07:49.846 17403 17403 W System.err: at com.mapbox.maps.Snapshotter.start$lambda$13(Snapshotter.kt:181)
04-07 12:07:49.846 17403 17403 W System.err: at com.mapbox.maps.Snapshotter.$r8$lambda$U-QghdWV6YQyBenjwZeiG2To9GQ(Unknown Source:0)
04-07 12:07:49.846 17403 17403 W System.err: at com.mapbox.maps.Snapshotter$$ExternalSyntheticLambda4.run(Unknown Source:6)
04-07 12:07:49.846 17403 17403 W System.err: at android.os.MessageQueue.nativePollOnce(Native Method)
04-07 12:07:49.846 17403 17403 W System.err: at android.os.MessageQueue.next(MessageQueue.java:336)
04-07 12:07:49.846 17403 17403 W System.err: at android.os.Looper.loop(Looper.java:181)
04-07 12:07:49.846 17403 17403 W System.err: at android.app.ActivityThread.main(ActivityThread.java:7560)
04-07 12:07:49.846 17403 17403 W System.err: at java.lang.reflect.Method.invoke(Native Method)
04-07 12:07:49.846 17403 17403 W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
04-07 12:07:49.846 17403 17403 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
04-07 12:07:49.847 17403 17403 E Mapbox : [run_loop]: Please check the following Java stacktrace for more information related to the exception: null
04-07 12:07:49.847 17403 17403 D AndroidRuntime: Shutting down VM
--------- beginning of crash
04-07 12:07:49.848 17403 17403 E AndroidRuntime: FATAL EXCEPTION: main
04-07 12:07:49.848 17403 17403 E AndroidRuntime: Process: com.chirpbirding.birda_dev, PID: 17403
04-07 12:07:49.848 17403 17403 E AndroidRuntime: java.lang.UnsupportedOperationException
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at java.nio.ByteBuffer.array(ByteBuffer.java:774)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.rnmapbox.rnmbx.v11compat.image.ImageKt.toByteArray(Image.kt:29)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.rnmapbox.rnmbx.utils.BitmapUtils.createImgBase64(BitmapUtils.kt:109)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule$takeSnap$1$1.invoke(RNMBXSnapshotModule.kt:62)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule$takeSnap$1$1.invoke(RNMBXSnapshotModule.kt:50)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.rnmapbox.rnmbx.v11compat.snapshot.SnapshotKt$sam$com_mapbox_maps_SnapshotResultCallback$0.onSnapshotResult(Unknown Source:2)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.mapbox.maps.Snapshotter.start$lambda$13(Snapshotter.kt:181)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.mapbox.maps.Snapshotter.$r8$lambda$U-QghdWV6YQyBenjwZeiG2To9GQ(Unknown Source:0)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.mapbox.maps.Snapshotter$$ExternalSyntheticLambda4.run(Unknown Source:6)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at android.os.MessageQueue.nativePollOnce(Native Method)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at android.os.MessageQueue.next(MessageQueue.java:336)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at android.os.Looper.loop(Looper.java:181)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7560)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
04-07 12:07:49.848 17403 17403 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
04-07 12:07:49.852 17403 17403 E DevLauncher: DevLauncher tries to handle uncaught exception.
04-07 12:07:49.852 17403 17403 E DevLauncher: java.lang.UnsupportedOperationException
04-07 12:07:49.852 17403 17403 E DevLauncher: at java.nio.ByteBuffer.array(ByteBuffer.java:774)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.rnmapbox.rnmbx.v11compat.image.ImageKt.toByteArray(Image.kt:29)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.rnmapbox.rnmbx.utils.BitmapUtils.createImgBase64(BitmapUtils.kt:109)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule$takeSnap$1$1.invoke(RNMBXSnapshotModule.kt:62)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.rnmapbox.rnmbx.modules.RNMBXSnapshotModule$takeSnap$1$1.invoke(RNMBXSnapshotModule.kt:50)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.rnmapbox.rnmbx.v11compat.snapshot.SnapshotKt$sam$com_mapbox_maps_SnapshotResultCallback$0.onSnapshotResult(Unknown Source:2)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.mapbox.maps.Snapshotter.start$lambda$13(Snapshotter.kt:181)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.mapbox.maps.Snapshotter.$r8$lambda$U-QghdWV6YQyBenjwZeiG2To9GQ(Unknown Source:0)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.mapbox.maps.Snapshotter$$ExternalSyntheticLambda4.run(Unknown Source:6)
04-07 12:07:49.852 17403 17403 E DevLauncher: at android.os.MessageQueue.nativePollOnce(Native Method)
04-07 12:07:49.852 17403 17403 E DevLauncher: at android.os.MessageQueue.next(MessageQueue.java:336)
04-07 12:07:49.852 17403 17403 E DevLauncher: at android.os.Looper.loop(Looper.java:181)
04-07 12:07:49.852 17403 17403 E DevLauncher: at android.app.ActivityThread.main(ActivityThread.java:7560)
04-07 12:07:49.852 17403 17403 E DevLauncher: at java.lang.reflect.Method.invoke(Native Method)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
04-07 12:07:49.852 17403 17403 E DevLauncher: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
04-07 12:07:49.858 17403 17403 I Timeline: Timeline: Activity_launch_request time:1005888050
04-07 12:07:51.887 17403 18502 I Process : Sending signal. PID: 17403 SIG: 9
Expected behavior
snapshotManager.takeSnap should return a promise that resolves to the uri of the snapshot.
Notes / preliminary analysis
No response
Additional links and references
No response