mapbox / mapbox/mapbox-maps-android

MapboxSDKCommon.getContext crash

Aperta
#2,455 14 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

auto-triaged bug :beetle: needs info
Lingua principale
Kotlin
Stelle
578
Fork
161
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

## 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.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con lo stack trace attraverso LocationUpdatesReceiver.kt ed esamina MapboxSDKCommon.kt e LocationServiceImpl.kt, concentrandoti su quando appContext viene inizializzato prima del caricamento del servizio di localizzazione. Riproduci o analizza i percorsi background e receiver descritti nell’issue. Il lavoro è completato quando il servizio di aggiornamento della posizione non va più in crash perché appContext non è stato inizializzato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
android, kotlin
Ambito
mobile-dev
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Da chiarire
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.