Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cant configure headless task #26

Closed
pepealonso95 opened this issue May 2, 2019 · 22 comments
Closed

Cant configure headless task #26

pepealonso95 opened this issue May 2, 2019 · 22 comments

Comments

@pepealonso95
Copy link

Your Environment

  • Plugin version: 0.2.0
  • Platform: Android
  • OS version: 28
  • Device manufacturer / model: Oneplus 6
  • Flutter info (flutter info, flutter doctor): No issues
  • Plugin config

Debug logs
2019-05-02 12:17:15.324 1191-1191/? E/LoadedApk: Unable to instantiate appComponentFactory
java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/com.google.android.gms-25uIRN7aQhfDvg4LoudGgA==/lib/arm64, /data/app/com.google.android.gms-25uIRN7aQhfDvg4LoudGgA==/base.apk!/lib/arm64-v8a, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:169)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.LoadedApk.createAppFactory(LoadedApk.java:226)
at android.app.LoadedApk.updateApplicationInfo(LoadedApk.java:346)
at android.app.ActivityThread.handleDispatchPackageBroadcast(ActivityThread.java:5524)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at com.android.server.SystemServer.run(SystemServer.java:482)
at com.android.server.SystemServer.main(SystemServer.java:322)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:838)
2019-05-02 12:17:15.325 1191-1191/? E/LoadedApk: Unable to instantiate appComponentFactory
java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/com.google.android.gms-25uIRN7aQhfDvg4LoudGgA==/lib/arm64, /data/app/com.google.android.gms-25uIRN7aQhfDvg4LoudGgA==/base.apk!/lib/arm64-v8a, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:169)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.LoadedApk.createAppFactory(LoadedApk.java:226)
at android.app.LoadedApk.updateApplicationInfo(LoadedApk.java:346)
at android.app.ActivityThread.handleDispatchPackageBroadcast(ActivityThread.java:5524)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at com.android.server.SystemServer.run(SystemServer.java:482)
at com.android.server.SystemServer.main(SystemServer.java:322)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:838)

Additional context
App gets stuck on "installing build". Error only occurs when setting the android:name to .Application in Manifest.

@christocracy
Copy link
Member

christocracy commented May 2, 2019

Flutter info (flutter info, flutter doctor)

You're supposed to actually post the output.

@pepealonso95
Copy link
Author

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, v1.5.4, on Microsoft Windows [Version 10.0.17134.706], locale es-UY)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[√] Android Studio (version 3.4)
[√] VS Code (version 1.33.1)
[√] Connected device (1 available)

• No issues found!

@christocracy
Copy link
Member

Here's what mine says:

[✓] Flutter (Channel stable, v1.2.1, on Mac OS X 10.14.4 18E226, locale en-CA)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
[✓] Android Studio (version 3.3)
[✓] Connected device (3 available)

@christocracy
Copy link
Member

Is your app configured for AndroidX compatibility?

@pepealonso95
Copy link
Author

supposedly yes, let me double check that

@christocracy
Copy link
Member

Clearly you're having AndroidX issues:

java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on 

@pepealonso95
Copy link
Author

pepealonso95 commented May 2, 2019

fixed those issues, now logcat presents a different error

2019-05-02 12:55:02.806 13293-13293/com.litapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.litapp, PID: 13293
    java.lang.RuntimeException: Unable to instantiate application com.litapp.Application: java.lang.ClassNotFoundException: Didn't find class "com.litapp.Application" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.litapp-F8LD-rqSPtkcx6-_MXmBmA==/base.apk"],nativeLibraryDirectories=[/data/app/com.litapp-F8LD-rqSPtkcx6-_MXmBmA==/lib/arm64, /data/app/com.litapp-F8LD-rqSPtkcx6-_MXmBmA==/base.apk!/lib/arm64-v8a, /system/lib64]]
        at android.app.LoadedApk.makeApplication(LoadedApk.java:1095)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6010)
        at android.app.ActivityThread.access$1300(ActivityThread.java:207)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1748)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6863)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.litapp.Application" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.litapp-F8LD-rqSPtkcx6-_MXmBmA==/base.apk"],nativeLibraryDirectories=[/data/app/com.litapp-F8LD-rqSPtkcx6-_MXmBmA==/lib/arm64, /data/app/com.litapp-F8LD-rqSPtkcx6-_MXmBmA==/base.apk!/lib/arm64-v8a, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:169)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:50)
        at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:49)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1124)
        at android.app.LoadedApk.makeApplication(LoadedApk.java:1087)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6010) 
        at android.app.ActivityThread.access$1300(ActivityThread.java:207) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1748) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6863) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

@christocracy
Copy link
Member

Setup docs need to be updated for copy/pasters. Duplicate #24

@pepealonso95
Copy link
Author

pepealonso95 commented May 2, 2019

still getting error

2019-05-02 13:05:16.844 14207-14252/com.litapp E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: NoSuchMethodError: The method 'toRawHandle' was called on null.
    Receiver: null
    Tried calling: toRawHandle()
    #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:50:5)
    #1      BackgroundFetch.registerHeadlessTask (package:background_fetch/background_fetch.dart:318:51)
    <asynchronous suspension>
    #2      BackgroundLocationFetch.start (package:lit/backgroundLocation/backgroundLocationFetch.dart:30:21)
    #3      FireMapState._startBackgroundLocation (package:lit/view/map.dart:48:15)
    #4      _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:49:6)
    #5      FireMapState._startBackgroundLocation (package:lit/view/map.dart:44:33)
    #6      FireMapState._onMapCreated (package:lit/view/map.dart:59:7)
    #7      _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:77:64)
    #8      _rootRunUnary (dart:async/zone.dart:1132:38)
    #9      _CustomZone.runUnary (dart:async/zone.dart:1029:19)
    #10     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
    #11     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
    #12     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
    #13     Future._complete (dart:async/future_impl.dart:473:7)
    #14     _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
    #15     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:28:18)
    #16     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:294:13)
    #17     MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart)
    #18     _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:77:64)
    #19     _rootRunUnary (dart:async/zone.dart:1132:38)
    #20     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
    #21     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
    #22     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
    #23     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
    #24     Future._completeWithValue (dart:async/future_impl.dart:483:5)
    #25     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:513:7)
    #26     _rootRun (dart:async/zone.dart:1124:13)
    #27     _CustomZone.run (dart:async/zone.dart:1021:19)
    #28     _CustomZone.runGuarded (dart:async/zone.dart:923:7)
    #29     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:963:23)
    #30     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
    #31     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

@christocracy
Copy link
Member

Multi-line syntax highlighting requires 3-backticks, not one.

@christocracy
Copy link
Member

LIke this:

@pepealonso95
Copy link
Author

2019-05-02 13:05:16.844 14207-14252/com.litapp E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: NoSuchMethodError: The method 'toRawHandle' was called on null.
Receiver: null
Tried calling: toRawHandle()
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:50:5)
#1 BackgroundFetch.registerHeadlessTask (package:background_fetch/background_fetch.dart:318:51)

#2 BackgroundLocationFetch.start (package:lit/backgroundLocation/backgroundLocationFetch.dart:30:21)
#3 FireMapState._startBackgroundLocation (package:lit/view/map.dart:48:15)
#4 _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:49:6)
#5 FireMapState._startBackgroundLocation (package:lit/view/map.dart:44:33)
#6 FireMapState._onMapCreated (package:lit/view/map.dart:59:7)
#7 _asyncThenWrapperHelper. (dart:async-patch/async_patch.dart:77:64)
#8 _rootRunUnary (dart:async/zone.dart:1132:38)
#9 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#10 _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#11 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#12 Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#13 Future._complete (dart:async/future_impl.dart:473:7)
#14 _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#15 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:28:18)
#16 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:294:13)
#17 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart)
#18 _asyncThenWrapperHelper. (dart:async-patch/async_patch.dart:77:64)
#19 _rootRunUnary (dart:async/zone.dart:1132:38)
#20 _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#21 _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#22 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#23 Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#24 Future._completeWithValue (dart:async/future_impl.dart:483:5)
#25 Future._asyncComplete. (dart:async/future_impl.dart:513:7)
#26 _rootRun (dart:async/zone.dart:1124:13)
#27 _CustomZone.run (dart:async/zone.dart:1021:19)
#28 _CustomZone.runGuarded (dart:async/zone.dart:923:7)
#29 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:963:23)
#30 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#31 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

@christocracy
Copy link
Member

Show me your dart code.

@transistorsoft transistorsoft deleted a comment from pepealonso95 May 2, 2019
@pepealonso95
Copy link
Author

import 'package:background_fetch/background_fetch.dart';
import 'package:lit/logic/backgroundLocation.dart';

class BackgroundLocationFetch implements BackgroundLocation {
  void backgroundFetchHeadlessTask() async {
    print('[BackgroundFetch] HeadlessTask');
    BackgroundFetch.finish();
  }

  void start() {
    BackgroundFetch.configure(
        BackgroundFetchConfig(
            minimumFetchInterval: 15,
            stopOnTerminate: false,
            startOnBoot: true,
        enableHeadless: true), () async {

      // This callback is typically fired every 15 minutes while in the background.
      print('[BackgroundFetch] Event received.');
      // IMPORTANT:  You must signal completion of your fetch task or the OS could
      // punish your app for spending much time in the background.
      BackgroundFetch.finish();
    });

    BackgroundFetch.registerHeadlessTask(backgroundFetchHeadlessTask);
  }
}

final BackgroundLocationFetch backService = BackgroundLocationFetch();

@christocracy
Copy link
Member

No: You can't do it like that. You must BackgroundFetch.registerHeadlessTask in main.dart.

See the example

@christocracy
Copy link
Member

And see docs enableHeadless

@pepealonso95
Copy link
Author

so all headless tasks must only be registered in ´main.dart´ or after configuring BackgroundFetch?

@christocracy
Copy link
Member

In main.dart.

@christocracy
Copy link
Member

  • You BackgroundFetch.configure in YourApp.
  • You BackgroundFetch.registerHeadlessTask in main.dart.
  • These two methods are never placed together. They live separately.
  • When an Android app runs headless YourApp is not executed.

@stevenspiel
Copy link

I had the same problem with the app hanging on "installing build". But the solution for me was to include the package declaration at the top of Application.java, like is done in the example, but I didn't see to do that in the Android install instructions. So, my Application.java file ended up looking like this:

package name.of.my.package; // <--- this is the important line

import com.transistorsoft.flutter.backgroundfetch.BackgroundFetchPlugin;

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class Application extends FlutterApplication implements PluginRegistry.PluginRegistrantCallback {
  @Override
  public void onCreate() {
    super.onCreate();
    BackgroundFetchPlugin.setPluginRegistrant(this);
  }

  @Override
  public void registerWith(PluginRegistry registry) {
    GeneratedPluginRegistrant.registerWith(registry);
  }
}

@Ahmadre
Copy link

Ahmadre commented Jul 31, 2019

Thank you soooo much @stevenspiel ! That fixed my headless problem :). Maybe someone can fix this tutorial: https://github.com/transistorsoft/flutter_background_fetch/blob/master/help/INSTALL-ANDROID.md

@christocracy
Copy link
Member

@Ahmadre updated install docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants