mapbox / mapbox/mapbox-maps-android

MapboxSDKCommon.getContext crash

Abierto
#2,455 14 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

auto-triaged bug :beetle: needs info
Lenguaje dominante
Kotlin
Estrellas
578
Forks
161
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

## Environment

- Android OS version: 14
- Devices affected: Mainly Samsung devices
- Maps SDK Version: 10.5.0

## Observed behavior and steps to reproduce

In crashlytics I receive a bunch of crashes from a small amount of users using my app where the app randomly crashes with the following stacktrace:
```
Exception java.lang.ExceptionInInitializerError:
at com.mapbox.common.location.LocationUpdatesReceiver$service$2.invoke (LocationUpdatesReceiver.kt:10)
at com.mapbox.common.location.LocationUpdatesReceiver$service$2.invoke (LocationUpdatesReceiver.kt:9)
at kotlin.SynchronizedLazyImpl.getValue (LazyJVM.kt)
at com.mapbox.common.location.LocationUpdatesReceiver.getService (LocationUpdatesReceiver.kt)
at com.mapbox.common.location.LocationUpdatesReceiver.onReceive (LocationUpdatesReceiver.kt)
at android.app.ActivityThread.handleReceiver (ActivityThread.java:4719)
at android.app.ActivityThread.-$$Nest$mhandleReceiver
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2448)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:257)
at android.os.Looper.loop (Looper.java:368)
at android.app.ActivityThread.main (ActivityThread.java:8839)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:572)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1049)
Caused by Bb.e: lateinit property appContext has not been initialized
at com.mapbox.common.MapboxSDKCommon.getContext (MapboxSDKCommon.kt)
at com.mapbox.common.location.LocationServiceImpl. (LocationServiceImpl.kt)
```

From what I was able to gather this happens at random, sometimes when the app is backgrounded or sometimes when the app is left open. I tried many combinations to get it to happen to me but I myself am unable to reproduce it or even trigger it.

I'm not doing anything special, below is my code to initialize the map using Compose:
```
val mapState = rememberMapState {
gesturesSettings = GesturesSettings.Builder()
.setPinchScrollEnabled(false)
.build()
}

MapboxMap(
modifier = Modifier.fillMaxSize(),
composeMapInitOptions = ComposeMapInitOptions(
mapOptions = MapOptions.Builder()
.contextMode(ContextMode.UNIQUE)
.viewportMode(ViewportMode.DEFAULT)
.build()
),
mapState = mapState,
scaleBar = { /* No scalebar */ },
logo = { Logo(contentPadding = PaddingValues(20.dp)) },
attribution = {
Attribution(
iconColor = theme.colorScheme.secondary,
contentPadding = PaddingValues(
start = 110.dp,
top = 0.dp,
end = 0.dp,
bottom = 20.dp
)
)
}
) {
// Load the style on the fly.
MapEffect(styleUrl) {
it.mapboxMap.loadStyle(styleUrl)
}
}
```

I receive the styleURL from a viewModel.

Then there's also a button added that toggles the user location. That's being done this way:
```
MapEffect(isShowingUsersLocation) {
it.location.updateSettings {
enabled = isShowingUsersLocation
}
}
```

## Expected behavior

A crash not related to the location update service.

## Notes / preliminary analysis

I run the app through R8, but can't tell if that's the reason of the crashes as I'm unable to reproduce it in either an R8 built or a non R8 built.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con el stack trace a través de LocationUpdatesReceiver.kt e inspecciona MapboxSDKCommon.kt y LocationServiceImpl.kt, centrándote en cuándo se inicializa appContext antes de cargar el servicio de ubicación. Reproduce o razona sobre las rutas de background y receiver descritas en el issue. Se considera completado cuando el servicio de actualización de ubicación ya no se bloquea porque appContext no se ha inicializado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
android, kotlin
Área
mobile-dev
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Necesita aclaración
Aptitud para principiantes
42/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.