Failed resolution of: Lcom/google/android/gms/location/LocationListener; – B4X NoClassDefFoundError

NoClassDefFoundError

Il runtime non trova LocationListener perché le dipendenze Google Play Services richieste da FusedLocationProvider non sono state aggiunte o risolte nel modulo Main. Nel caso documentato l'aggiunta delle dipendenze AdditionalJar corrette ha eliminato l'errore; la scheda è riferita alla configurazione legacy della libreria.

Cosa significa questo errore?

Il runtime non trova LocationListener perché le dipendenze Google Play Services richieste da FusedLocationProvider non sono state aggiunte o risolte nel modulo Main. Nel caso documentato l'aggiunta delle dipendenze AdditionalJar corrette ha eliminato l'errore; la scheda è riferita alla configurazione legacy della libreria.

Messaggio originale

Failed resolution of: Lcom/google/android/gms/location/LocationListener;

Contesto e parole chiave

Alias

  • FusedLocationProvider missing class
  • LocationListener not found

Messaggi alternativi

  • NoClassDefFoundError per com.google.android.gms.location.LocationListener

Prodotti

  • B4A
  • FusedLocationProvider
  • Google Play Services

Piattaforme

  • Android

Parole chiave

  • b4a fusedlocationprovider noclassdeffound
  • locationlistener b4a
  • play-services-location additionaljar

Cause possibili

Dipendenze Google Play Services non presenti nel classpath

FusedLocationProvider referenzia le classi di Google Play Services e della libreria di supporto. Se le AdditionalJar non sono dichiarate in Main o sono state sostituite da versioni incompatibili, LocationListener non entra nell'APK e la risoluzione della classe fallisce a runtime.

comune

Diagnosi

Dipendenze del modulo Main e archivi risolti

Verificare le direttive AdditionalJar in Main e controllare nel log di compilazione che play-services-location e la libreria di supporto siano state scaricate e incluse.

Come leggere il risultato. Se LocationListener è l'unica classe mancante e le dipendenze non compaiono nel classpath, il problema è di configurazione delle librerie.

Risoluzione

Dichiarare le dipendenze FusedLocationProvider in Main

Difficoltà: mediaRischio: medio

Aggiungere le dipendenze Maven nel progetto B4A e allinearle alla versione della libreria e del repository Android utilizzati.

  1. Inserire le due AdditionalJar nel modulo Main, non soltanto in un modulo secondario.
  2. Assicurarsi che Android Support Repository o le dipendenze equivalenti richieste siano disponibili.
  3. Pulire e ricompilare, quindi verificare che il runtime risolva LocationListener.
B4A
#AdditionalJar: com.android.support:support-v4
B4A
#AdditionalJar: com.google.android.gms:play-services-location

Domande frequenti

Questa soluzione vale per ogni versione attuale di B4A?

È una correzione documentata per la configurazione legacy del thread. Per versioni moderne va verificata la matrice di dipendenze della libreria installata prima di riutilizzare le stesse direttive.

Approfondimenti

Schede correlate