mapbox / mapbox/mapbox-maps-android

Crash when using custom httpservice client

Ouverte
#2,055 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

auto-triaged bug :beetle:
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: 33
  • Devices affected: pixel 7
  • Maps SDK Version: 10.12

Observed behavior and steps to reproduce

Using guide to create custom http service module with enableConfiguration from https://github.com/mapbox/mapbox-base-android/blob/master/MODULARIZATION.md#dependency-injection leads to app crashing at startup.

@MapboxModule(type = MapboxModuleType.CommonHttpClient, enableConfiguration = true)
class CacheableTileHttpService(private val tileProvidersRepository : TileProvidersRepository) : HttpServiceInterface {
...
}

class MainActivity : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        Mapbox_HttpClientModuleConfiguration.moduleProvider =
            object : Mapbox_HttpClientModuleConfiguration.ModuleProvider {
                override fun createHttpClient(): HttpServiceInterface =
                    CacheableTileHttpService(viewModel.tileProvidersRepository)
            }

     super.onCreate(savedInstanceState)
    ...
}

this leads to crash MapboxInvalidModuleException(type=CommonHttpClient)

Seems PlatformHttpService.createPlatformHttpService is called before we get a chance to set moduleProvider, even setting moduleProvider from Application class will not get a chance to get called before PlatformHttpService.createPlatformHttpService

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par le guide de modularisation et suivez PlatformHttpService.createPlatformHttpService ainsi que l'initialisation de Mapbox_HttpClientModuleConfiguration.moduleProvider. Reproduisez le plantage au démarrage à l'aide de l'exemple CacheableTileHttpService et vérifiez qu'un fournisseur CommonHttpClient configuré est disponible avant la création du service de plateforme, sans déclencher MapboxInvalidModuleException.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
android, kotlin
Domaine
mobile, networking
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.