React-native-background-geolocation: React Native 0.62.0 - java.lang.NoClassDefFoundError: Landroidx/localbroadcastmanager/content/LocalBroadcastManager

Created on 30 Mar 2020  路  2Comments  路  Source: transistorsoft/react-native-background-geolocation

Your Environment

  • Plugin version: ^3.4.2
  • Platform: Android
  • OS version: X
  • Device manufacturer / model: Pixel
  • React Native version (react-native -v): 0.62.0
  • Plugin config
    ```javascript
    import React, { Component } from 'react';
    import { View, Text } from 'react-native';

import BackgroundGeolocation from "react-native-background-geolocation";

export default class App extends Component {
constructor(props) {
super(props);
this.state = {
};
}

componentWillMount() {
////
// 1. Wire up event-listeners
//

// This handler fires whenever bgGeo receives a location update.
BackgroundGeolocation.onLocation(this.onLocation, this.onError);

// This handler fires when movement states changes (stationary->moving; moving->stationary)
BackgroundGeolocation.onMotionChange(this.onMotionChange);

// This event fires when a change in motion activity is detected
BackgroundGeolocation.onActivityChange(this.onActivityChange);

// This event fires when the user toggles location-services authorization
BackgroundGeolocation.onProviderChange(this.onProviderChange);

////
// 2.  Execute #ready method (required)
//
BackgroundGeolocation.ready({
  // Geolocation Config
  desiredAccuracy: BackgroundGeolocation.DESIRED_ACCURACY_HIGH,
  distanceFilter: 10,
  // Activity Recognition
  stopTimeout: 1,
  // Application config
  debug: true, // <-- enable this hear sounds for background-geolocation life-cycle.
  logLevel: BackgroundGeolocation.LOG_LEVEL_VERBOSE,
  stopOnTerminate: false,   // <-- Allow the background-service to continue tracking when user closes the app.
  startOnBoot: true,        // <-- Auto start tracking when device is powered-up.
  // HTTP / SQLite config
  url: 'http://yourserver.com/locations',
  batchSync: false,       // <-- [Default: false] Set true to sync locations to server in a single HTTP request.
  autoSync: true,         // <-- [Default: true] Set true to sync each location to server as it arrives.
  headers: {              // <-- Optional HTTP headers
    "X-FOO": "bar"
  },
  params: {               // <-- Optional HTTP params
    "auth_token": "maybe_your_server_authenticates_via_token_YES?"
  }
}, (state) => {
  console.log("- BackgroundGeolocation is configured and ready: ", state.enabled);

  if (!state.enabled) {
    ////
    // 3. Start tracking!
    //
    BackgroundGeolocation.start(function() {
      console.log("- Start success");
    });
  }
});

}

// You must remove listeners when your component unmounts
componentWillUnmount() {
BackgroundGeolocation.removeListeners();
}
onLocation(location) {
console.log('[location] -', location);
}
onError(error) {
console.warn('[location] ERROR -', error);
}
onActivityChange(event) {
console.log('[activitychange] -', event); // eg: 'on_foot', 'still', 'in_vehicle'
}
onProviderChange(provider) {
console.log('[providerchange] -', provider.enabled, provider.status);
}
onMotionChange(event) {
console.log('[motionchange] -', event.isMoving, event.location);
}

render() {
return (

App

);
}
}

## Expected Behavior
The Background Geofence service should start.


## Actual Behavior
The app crashed

## Steps to Reproduce
<!--- reproduce this issue; include code to reproduce, if relevant -->
1. Create a RN 0.62.0 project;
2. Install lib following all steps of documentation;
3. Initialize BackgroundGeolocation service and call the BackgroundGeolocation.start() following the documentation example;
4. Run your project on Android device

## Debug logs

``` <!-- Syntax highlighting:  DO NOT REMOVE -->
03-30 17:54:56.376 23148 23148 D AndroidRuntime: Shutting down VM
03-30 17:54:56.378 23148 23148 E AndroidRuntime: FATAL EXCEPTION: main
03-30 17:54:56.378 23148 23148 E AndroidRuntime: Process: com.bgteste, PID: 23148
03-30 17:54:56.378 23148 23148 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/localbroadcastmanager/content/LocalBroadcastManager;
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at com.intentfilter.androidpermissions.PermissionManager.registerBroadcastReceiver(PermissionManager.java:87)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at com.intentfilter.androidpermissions.PermissionHandler.registerForBroadcastIfNeeded(PermissionHandler.java:124)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at com.intentfilter.androidpermissions.PermissionHandler.checkPermissions(PermissionHandler.java:44)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at com.intentfilter.androidpermissions.PermissionManager.checkPermissions(PermissionManager.java:50)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at com.transistorsoft.locationmanager.util.b$5.run(Unknown Source:31)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:883)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:100)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:214)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7356)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
03-30 17:54:56.378 23148 23148 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.localbroadcastmanager.content.LocalBroadcastManager" on path: DexPathList[[zip file "/data/app/com.bgteste-qp_cd5HUq6CILdeD_W_3xg==/base.apk"],nativeLibraryDirectories=[/data/app/com.bgteste-qp_cd5HUq6CILdeD_W_3xg==/lib/x86_64, /data/app/com.bgteste-qp_cd5HUq6CILdeD_W_3xg==/base.apk!/lib/x86_64, /system/lib64, /system/product/lib64]]
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
03-30 17:54:56.378 23148 23148 E AndroidRuntime:        ... 12 more
03-30 17:54:56.389 23148 23148 E TSLocationManager: [c.t.l.a.BackgroundGeolocation$e uncaughtException] 
03-30 17:54:56.389 23148 23148 E TSLocationManager:   鈥硷笍  Uncaught Exception: Failed resolution of: Landroidx/localbroadcastmanager/content/LocalBroadcastManager;
03-30 17:54:56.389 23148 23148 E TSLocationManager: {"activityRecognitionInterval":10000,"allowIdenticalLocations":false,"authorization":{},"autoSync":true,"autoSyncThreshold":0,"batchSync":false,"configUrl":"","debug":true,"deferTime":0,"desiredAccuracy":-1,"desiredOdometerAccuracy":100,"disableAutoSyncOnCellular":false,"disableElasticity":false,"disableLocationAuthorizationAlert":false,"disableMotionActivityUpdates":false,"disableStopDetection":false,"distanceFilter":10,"elasticityMultiplier":1,"enableHeadless":true,"enableTimestampMeta":false,"encrypt":false,"extras":{},"fastestLocationUpdateInterval":-1,"forceReloadOnBoot":false,"forceReloadOnGeofence":false,"forceReloadOnHeartbeat":false,"forceReloadOnLocationChange":false,"forceReloadOnMotionChange":false,"forceReloadOnSchedule":false,"foregroundService":true,"geofenceInitialTriggerEntry":true,"geofenceModeHighAccuracy":false,"geofenceProximityRadius":1000,"geofenceTemplate":"","headers":{"X-FOO":"bar"},"headlessJobService":"com.transistorsoft.rnbackgroundgeolocation.HeadlessTask","heartbeatInterval":60,"httpRootProperty":"location","httpTimeout":60000,"isMoving":false,"locationAuthorizationRequest":"Always","locationTemplate":"","locationTimeout":60,"locationUpdateInterval":1000,"locationsOrderDirection":"ASC","logLevel":5,"logMaxDays":3,"maxBatchSize":-1,"maxDaysToPersist":14,"maxRecordsToPersist":-1,"method":"POST","minimumActivityRecognitionConfidence":75,"notification":{"layout":"","title":"react-native-background-geolocation","text":"Tracking engaged","color":"","channelName":"TSLocationManager","smallIcon":"","largeIcon":"","priority":0,"strings":{},"actions":[]},"params":{"auth_token":"maybe_your_server_authenticates_via_token_YES?"},"persist":true,"persistMode":2,"schedule":[],"scheduleUseAlarmManager":false,"speedJumpFilter":300,"startOnBoot":true,"stationaryRadius":25,"stopAfterElapsedMinutes":0,"stopOnStationary":false,"stopOnTerminate":false,"stopTimeout":1,"triggerActivities":"in_vehicle, on_bicycle, on_foot, running, walking","url":"http:\/\/yourserver.com\/locations","useSignificantChangesOnly":false,"enabled":false,"schedulerEnabled":false,"trackingMode":1,"odometer":0,"isFirstBoot":false,"didLaunchInBackground":false}
03-30 17:54:56.389 23148 23148 E TSLocationManager: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/localbroadcastmanager/content/LocalBroadcastManager;
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at com.intentfilter.androidpermissions.PermissionManager.registerBroadcastReceiver(PermissionManager.java:87)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at com.intentfilter.androidpermissions.PermissionHandler.registerForBroadcastIfNeeded(PermissionHandler.java:124)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at com.intentfilter.androidpermissions.PermissionHandler.checkPermissions(PermissionHandler.java:44)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at com.intentfilter.androidpermissions.PermissionManager.checkPermissions(PermissionManager.java:50)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at com.transistorsoft.locationmanager.util.b$5.run(Unknown Source:31)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at android.os.Handler.handleCallback(Handler.java:883)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at android.os.Handler.dispatchMessage(Handler.java:100)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at android.os.Looper.loop(Looper.java:214)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at android.app.ActivityThread.main(ActivityThread.java:7356)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at java.lang.reflect.Method.invoke(Native Method)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
03-30 17:54:56.389 23148 23148 E TSLocationManager: Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.localbroadcastmanager.content.LocalBroadcastManager" on path: DexPathList[[zip file "/data/app/com.bgteste-qp_cd5HUq6CILdeD_W_3xg==/base.apk"],nativeLibraryDirectories=[/data/app/com.bgteste-qp_cd5HUq6CILdeD_W_3xg==/lib/x86_64, /data/app/com.bgteste-qp_cd5HUq6CILdeD_W_3xg==/base.apk!/lib/x86_64, /system/lib64, /system/product/lib64]]
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
03-30 17:54:56.389 23148 23148 E TSLocationManager:     ... 12 common frames omitted
03-30 17:54:56.408  1964  1978 W ActivityTaskManager:   Force finishing activity com.bgteste/.MainActivity
03-30 17:54:56.412  1964  1978 W InputReader: Device has associated, but no associated display id.
03-30 17:54:56.413  1964 23287 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
03-30 17:54:56.521  1964  1989 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
03-30 17:54:56.521  1964  1989 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
03-30 17:54:56.530  1964  1980 W Looper  : Slow dispatch took 110ms android.fg h=com.android.server.DropBoxManagerService$DropBoxManagerBroadcastHandler c=null m=1
03-30 17:54:56.531  1964  1981 I ActivityManager: Showing crash dialog for package com.bgteste u0

Most helpful comment

I've had a number of these reports over the past few days. Something changed in Android and/or RN recently.

Add following to your android/app/build.gradle:

dependencies {  
    implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
}

I'll probably add this to the plugin's build.gradle

All 2 comments

I've had a number of these reports over the past few days. Something changed in Android and/or RN recently.

Add following to your android/app/build.gradle:

dependencies {  
    implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
}

I'll probably add this to the plugin's build.gradle

Thanks. Excellent support.

Was this page helpful?
0 / 5 - 0 ratings