mapbox / mapbox/mapbox-maps-android
MapboxSDKCommon.getContext crash
Personne n'a encore pris cette issue.
- Langage dominant
- Kotlin
- Étoiles
- 578
- Forks
- 161
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
## 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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par suivre la stack trace dans LocationUpdatesReceiver.kt et examinez MapboxSDKCommon.kt et LocationServiceImpl.kt, en vous concentrant sur le moment où appContext est initialisé avant le chargement du service de localisation. Reproduisez les chemins background et receiver décrits dans l’issue, ou raisonnez à leur sujet. La tâche est terminée lorsque le service de mise à jour de la localisation ne plante plus parce que appContext n’a pas été initialisé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- android, kotlin
- Domaine
- mobile-dev
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- À clarifier
- Accessibilité débutants
- 42/100