Skip to content

[image_picker] crash when use aar as dependence from 'flutter build aar'  #41558

@liujingtech

Description

@liujingtech

add image_picker as module to android project is work.But aar has many advantages.

Steps to Reproduce

  1. create new flutter module.
  2. create new android application.
  3. add 'image_picker: 0.6.1+4' to pubspec.yaml
  4. run flutter build aar.
  5. use Add-Flutter-to-existing-apps to add aar to android project.
  6. add debugImplementation ('io.flutter.plugins.imagepicker:imagepicker_debug:1.0@aar')
  7. gradle sync and run.
  8. app open and crash

Logs

2019-09-29 15:49:46.296 5122-5122/? E/g.myapplicatio: Unknown bits set in runtime_flags: 0x8000
2019-09-29 15:49:46.632 5122-5122/org.liujing.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.liujing.myapplication, PID: 5122
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.liujing.myapplication/org.liujing.myapplication.MainActivity}: java.lang.RuntimeException: Failed to call observer method
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.RuntimeException: Failed to call observer method
at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:226)
at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194)
at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185)
at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:36)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:123)
at androidx.lifecycle.ReportFragment.onActivityCreated(ReportFragment.java:76)
at android.app.Fragment.performActivityCreated(Fragment.java:2543)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1323)
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1581)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1642)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3052)
at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3004)
at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:184)
at android.app.Activity.performCreate(Activity.java:7809)
at android.app.Activity.performCreate(Activity.java:7791)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:214) 
at android.app.ActivityThread.main(ActivityThread.java:7356) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
Caused by: java.lang.ClassCastException: org.liujing.myapplication.MainActivity cannot be cast to android.app.Application
at io.flutter.plugins.imagepicker.ImagePickerPlugin.(ImagePickerPlugin.java:94)
at io.flutter.plugins.imagepicker.ImagePickerPlugin.registerWith(ImagePickerPlugin.java:53)
at io.flutter.plugins.GeneratedPluginRegistrant.registerWith(GeneratedPluginRegistrant.java:14)
at io.flutter.facade.Flutter$2.onCreate(Flutter.java:98)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:216)
at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194) 
at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185) 
at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:36) 
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361) 
at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300) 
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339) 
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145) 
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131) 
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:123) 
at androidx.lifecycle.ReportFragment.onActivityCreated(ReportFragment.java:76) 
at android.app.Fragment.performActivityCreated(Fragment.java:2543) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1323) 
at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1581) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1642) 
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3052) 
at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3004) 
at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:184) 
at android.app.Activity.performCreate(Activity.java:7809) 
at android.app.Activity.performCreate(Activity.java:7791) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:214) 
at android.app.ActivityThread.main(ActivityThread.java:7356) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

.

Caused by: java.lang.ClassCastException: org.liujing.myapplication.MainActivity cannot be cast to android.app.Application

io.flutter.plugins.imagepicker.ImagePickerPlugin:

ImagePickerPlugin(final Registrar registrar, final ImagePickerDelegate delegate) {
        // ...
        if (this.registrar != null) {
            ((Application)this.registrar.context()).registerActivityLifecycleCallbacks(this.activityLifecycleCallbacks);
        }

    }

((Application)this.registrar.context()) may need to be changed to this.registrar.context().getApplicationContext()

Metadata

Metadata

Assignees

No one assigned

    Labels

    a: existing-appsIntegration with existing apps via the add-to-app flowc: crashStack traces logged to the consolep: image_pickerThe Image Picker plugin.packageflutter/packages repository. See also p: labels.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions